SQL Dili – 2

PostgreSQL’in Çalıştığı İşletim Ortamları

PostgreSQL VTYS günümüzde birçok işlemci (RS6000, x86, m88k, Alpha, MIPS, Sparc, m68k, VAX) ve işletim sistemine (linux 2.0.x, linux 2.2.x,AIX, mklinux, DGUX, FreeBSD, OSF1, Solaris…) başarıyla taşınabilmiştir.

PostgreSQL’i Derleme, Kurma ve Çalıştırma

PostgreSQL’i derleyebilmek için sisteminizde bazı gereksinimlere ihtiyacınız olacak. Bunlar: ANSI C derleyicisi (gcc), GNU make, flex 2.5.2 veya üst sürümü ve son olarak byacc.

PostgreSQL kaynak paketinin açılması:

# cd /usr/src
# tar zxvf postgresql-v6.5.2.tar.gz

Derleme öncesi hazırlık: postgres kullanıcısının yaratılması, kaynak kod ve kurulum dizinlerinin hazırlanması:

# useradd -g users -m -d /home/pgdata -c 'PostgreSQL DBA' postgres
# chown -R postgres:users /usr/src/postgresql-6.5.2
# chown -R postgres:users /usr/local/pgsql
# su - postgres

Bundan sonraki işlemler postgres kullanıcısı olarak yapılacaktır. Derlemek için önce configure betiğini çalıştırarak derleme öncesi son yapılandırmayı tamamlamalısınız.

$ cd /usr/src/postgresql-6.5.2
$ ./configure --prefix=/usr/local/pgsql --enable-locale
$ gmake
$ gmake install

Veri Tabanını Tutucu Alanın Hazırlanması

Paylaştırılmış Nesnelerin (Shared Objects) sisteme dahil edilmesi:

$ exit
# echo '/usr/local/pgsql/lib' >> /etc/ld.so.conf
# ldconfig
# su - postgres

Veri Tabanı tutucu alanın hazırlanması

$ export PATH=$PATH:/usr/local/pgsql/bin
$ initlocation /home/pgdata

Şablon veri tabanının yaratılması

$ initdb --pgdata=/home/pgdata --pglib=/usr/local/pgsql/lib

PostgreSQL’de Türkçe Dil Desteği

Türkçe dil desteği Türkçe Alfabe sırasına uygun sıralamayı ve harfleri küçük harfe veya büyük harfe sorunsuz dönüştürmeyi kapsar. PostgreSQL VTYS bu desteğini işletim sisteminden alır.

Türkçe dil desteğinin etkinleştirilmesi için postgreSQL için bir betik hazırlayalım. Bir düz metin düzenleyicisi ile bir kabuk betiği oluşturalım.

$ vi /usr/local/pgsql/bin/postgresql.sh
--------------------------------------
#!/bin/sh
export LANG=tr
export LC_CTYPE=tr
export LC_COLLATE=tr_TR
export PATH=/usr/local/pgsql/bin:$PATH
rm -f /tmp/.s.PGSQL.5432
postmaster -i -p 5432 -S -D/home/pgdata
--------------------------------------
$ chmod 755 /usr/local/pgsql/bin/postgres.sh

Çalıştırma betiğini sistem açılış betiklerinin içine eklemeliyiz. Bunun için düz metin düzenleyiciniz ile /etc/rc.d/rc.local betiğini açın:

vi /etc/rc.d/rc.local
------------------------------------
echo "PostgreSQL VTYS baslatiliyor..."
su - postgres -c "/usr/local/pgsql/bin/postgresql.sh"
echo "PostgreSQL VTYS baslatildi."
-----------------------------------

PostgreSQL Ön Ucu

Veri Tabanı Yönetim Sistemlerinin yönetimi genelde VTYS ile birlikte gelen ön uç ile yapılır. Bu yönetim hem Veri Tabanlarının hem de verinin yönetimini kapsar. PostgreSQL VTYS ile gelen ön uç psql‘dir.

psql ile Veri Tabanlarına bağlantı:

  • Yerel Veri Tabanına geçerli kullanıcı kimliği ile erişim:
    psql -d vtadı
  • Yerel Veri Tabanına geçerli kullanıcı kimliği dışında bir kimlikle erişim:
    psql -u -d vtadı
  • Uzak Veri Tabanına geçerli kullanıcı kimliği dışında bir kimlikle erişim:
    psql -u -h bilgisayaradı.alanadı -d vtadı
  • Uzak Veri Tabanına geçerli kullanıcı kimliği dışında bir kimlikle ve varsayılan port numarası dışındaki bir porttan erişim:
    psql -u -h bilgisayaradı.alanadı -p 7386 -d vtadı

psql’in başlıca komutları:
psql’de komutlar ile başlar.

  • l
    PostgreSQL Veri Tabanı Yönetim Sistemi üzerindeki tüm Veri Tabanlarını listeler.
  • d
    Bağlı bulunan Veri Tabanındaki tüm kullanıcı tablo, indis ve serileri listeler.
  • z PostgreSQL VTYS’deki tüm veri tabanlarının erişim haklarını gösterir
  • h SQL deyimleri hakkında yardım verir
  • ? psql ön ucunun komutları hakkında yardım verir

DBA (DataBase Administrator) Kimdir?

Veri Tabanını oluşturan, bakımını yapan ve çevrim içi kalmasından sorumlu kişidir. PostgreSQL VTYS’de bu kişi Veri Tabanını initlocation ve initdb programlarını kullanarak oluşturan kişidir. Yani postgres kullanıcısıdır. Bu kişi VTYS’de tanımlı tüm Veri Tabanları üzerinde en üst düzey yetkiye sahiptir, Veri Tabanı kendisinin olmasa bile. Veri Tabanı Yönetim Sistemindeki diğer tüm kullanıcıları DBA ya da DBA’ın yetki verdiği kullanıcılar yaratır ve erişim yetkilerini verir.

template1 Veri Tabanı

template1 Veri Tabanı şablon Veri Tabanıdır. Yeni yaratılan tüm Veri Tabanları, template1 Veri Tabanı içinde tanımlı tüm kullanıcı tablo, indis ve serilerini buradan oluşturur. initlocation ve initdb programları çalıştırıldıkları anda template1 Veri Tabanı oluşur.

Örnek Bir Veri Tabanının Yaratılması

psql’de SQL Deyimi ile

Kabukta PostgreSQL ile gelen araçları kullanarak

Örnek Bir Veri Tabanı Kullanıcısının Yaratılması

psql’de SQL Deyimi ile

Kabukta PostgreSQL ile gelen araçları kullanarak

Kullanıcı Yetkilerinin Tanımlanması

Erişim Yapılandırması

PostgreSQL VTYS’de erişim yapılandırması pg_hba.conf dosyası ile yapılır. pg_hba.conf dosyası Veri Tabanı Tutucu Alanın kökünde yer almaktadır. Erişim denetim mekanizmalarında değişiklik yapmak için bu dosyayı düz metin düzenleyici ile düzenlemeniz ve PostgreSQL çok kullanıcılı ard ucunu yeniden başlatmanız yeterlidir.

pg_hba.conf dosyasında 3 çeşit satır bulunur:

  • # ile başlayan satırlar açıklama satırıdır, PostgreSQL tarafından göz ardı edilir.
  • local vtadı | all doğrulama [argüman]
  • IP_adres vtadı | all doğrulama [argüman]

Örnekler:

  • local all ident sameuser
  • local denemevt trust
  • 192.168.0.23 denemevt crypt
  • 192.168.0.0 geçicivt trust

Yedekleme ve Geri Yükleme

PostgreSQL VTYS’deki bir Veri Tabanını yedeklemek için pg_dump araç programı kullanılır. Bu programa verilebilen bazı argümanların anlamları:

-a Sadece veriyi döker.
-d dökümü SQL insert deyimleri olarak yapar.
-f dosya.sql dökümü dosya.sql dosyasına yazar.
-u farklı bir kullanıcı kimliği ile döküm alma.
-h uzak Veri Tabanının bilgisayar adresi.
-s sadece Veri Tabanı şemasını alır, veriyi dökmez.
-p uzak Veri Tabanına varsayılandan farklı bir porttan bağlantı kurar.

  • $ pg_dump -a -d -f denemevt.sql denemevt
    denemevt veri tabanındaki veriyi insert SQL deyimleri olarak denemevt.sql dosyayısına döker.
  • $ pg_dump -h bilgisayar.adresi -p 6789 -u -d -f denemevt.sql denemevt
    bilgisayar.adresi bilgisayarı üzerindeki denemevt Veri Tabanına, 6789 numaralı porttan bağlanır ve Veri Tabanı şeması ile veriyi SQL deyimleri olarak denemevt.sql dosyasına yazar.

Geri yükleme işlemi psql ile yapılmaktadır. psql’e i dosya.sql komutunu verdiğimizde, dosya.sql dosyasından tüm SQL deyimlerini okur ve işletir. Bu şekilde pg_dump ile yedeklemiş olduğumuz Veri Tabanına geri dönmüş oluruz.

Share

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.