Mayıs 8, 2018
CentOS 7 PostgreSQL 11 Kurulumu

 

Kurulum

CentOS’un varsayılan depoları postgresql paketleri içerir, böylece yum paket sistemini kullanarak sorunsuz bir şekilde kurabiliriz. Son sürümü kurmak istediğimiz  için PostgreSQL 10’u içeren RPM deposunu yüklüyoruz.

sudo yum install -y https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm

PostgreSQL11 paketini, PostgreSQL11-server paketini yükleyeceğiz. Ardından PostgreSQL Cluster’ını oluşturmak için initdb yapacağız:

PostgreSQL öntanımlı olarak 5432 portunda çalışır. PostgreSQL servisinin başlatacağız ve çalıştığını systemctl, ps ve netstat komutlarını kullanarak görüntüleyeceğiz:

Eğer netstat komutu sisteminizde yüklü değilse net-tools paketini aşağıdaki gibi kurabilirsiniz:

yum -y install net-tools

Veritabanı Kullanımı ve Rol Kavramı

Varsayılan olarak Postgres, kimlik doğrulama ve yetkilendirmeye yardımcı olmak için “role” adı verilen bir kavram kullanır. Bu roller normal Unix tarzı kullanıcı hesaplarına benzer, ancak Postgres rolleri daha esnek bir yapıya sahiptir.
Varsayılan olarak Postgresql servisinin kurulumunda postgres rolü ile ilişkilendirilmiş bir Unix/Linux sistem kullanıcısı oluşturulur.PostgreSQL veritabanına bu kullanıcı hesabı aracılığıyla erişiyoruz:

sudo -i -u postgres

Veritabanına bağlanmak için bir arabirim olan psql’i kullanıyoruz.

psql

Öntanımlı olarak yukarıdaki gibi bir kullanımla, postgres veritabanına postgres kullanıcısı ile localhost üzerinden 5432 portundan bağlantı sağlanır. psql ile bir veritabanına bağlanırken söz dizimi aşağıdaki gibidir:

psql --host=localhost --dbname=postgres --username=postgres --port=5432

Kurulumunu yapmış olduğumuz veritabanı sürümünü kontrol etmek için:

psql’den çıkış yapmak için:

postgres=#\q

PostgreSQL’de Kullanıcı Oluşturma

Unix/Linux sistemlerde veritabanına bağlanmadan sistemdeki postgres kullanıcısı ile komut satırı üzerinden veritabanı işlemleri yapmaya yarayan bazı özel komutlar, kurulum sırasında otomatik olarak yüklenir. Bu komutlardan biri olan “createuser” komutu ile veritabanı kullanıcı hesabı oluşturuyoruz:

createuser zekiye

psql ile veritabanına bağlanırken kullanıcı adı belirtilip bir veritabanı adı girilmediğinde; psql o kullanıcıyla aynı ada sahip bir veritabanına bağlanmaya çalışır.

psql --username=zekiye

Komutu ile zekiye kullanıcısının bağlanabileceği zekiye adında bir veritabanı olmasını beklediğinden bu komutun başarılı olabilmesi için bir veritabanı oluşturalım. Komut satırı aracılığıyla bir veritabanı oluşturabiliriz:

createdb zekiye

pg_hba.conf da zekiye kullanıcısının zekiye veritabanına erişimini tanımladıktan sonra veritabanına aşağıdaki erişebiliriz:

psql --username=zekiye --dbname=zekiye

PostgreSQL’de Tablo Oluşturma

Artık PostgreSQL veritabanı sistemine nasıl bağlanacağınızı bildiğinize göre, bazı temel görevleri nasıl tamamlayacağımıza başlayacağız.

Örnek olarak, öğrencilerin numara, ad ve soyadlarının tutulduğu bir tablo oluşturacağız ve kayıt ekleyeceğiz. Tablonun başarıyla oluşturulduğundan emin olmak için “\d tablo_adı” komutunu kullanacağız:

 

PostgreSQL’e Erişim Ayarları

PostgreSQL, varsayılan olarak localhost üzerindeki bağlantıları dinler.Böylece veritabanını kurduğumuz sunucu üzerinden erişebiliriz. Veritabanına uzak bir bilgisayardan erişilebilir hale getirmek için /var/lib/pgsql/11/data dizini altındaki postgresql.conf dosyasında listen_addresses parametresini bularak uzak bilgisayarın IP’sini yazabiliriz.

vim /var/lib/pgsql/11/data/postgresql.conf

listen_addresses = '85.73.178.47'

Veritabanına tüm IP’lerden gelen isteklerin dinlenmesini istiyorsak parametreyi aşağıdaki gibi düzenliyoruz:

listen_addresses = '*'

vim editörü ile açtığımız postgresql.conf dosyası üzerinde yapılan değişiklikleri “:wq” komutu ile kaydedip çıkabiliriz.

Bu işlem sonunda yapılan ayarların aktif olabilmesi için postgresql servisinin kapatılıp açılması gerekir.

sudo systemctl restart postgresql-11

 

PostgreSQL Kimlik Doğrulama Ayarları

PostgreSQL erişim izinleri /var/lib/pgsql/11/data dizini altındaki pg_hba.conf dosyasında tanımlanır.

vim /var/lib/pgsql/11/data/pg_hba.conf

pg_hba.conf dosyasında erişim izinleri formatı aşağıdaki gibidir:

host all all 85.73.178.47/32 md5

Yukarıdaki satırı pg_hba.conf dosyasına eklediğimizde 85.73.178.47 IP’sinden gelen tüm kullanıcılar tüm veritabanlarına md5 parola doğrulamasından geçirilerek erişebilecekler.
Veritanabınına değişken bir IP’den gelen zekiye kullanıcısına erişim izni vermek için pg_hba.conf dosyasına ekleyeceğimiz satır aşağıdaki gibi olmalıdır:

host all zekiye 0.0.0.0/0 md5

Bu dosyada yapılan değişikliklerin etkinleşmesi için “pg_reload_conf” komutu kullanılır. Bu SQL cümlesi ile PostgreSQL servisine reload işlemi yapılmış olur:

CentOS 7 de PostgreSQL için Güvenlik Duvarı Ayarları

Firewalld, CentOS 7’de bir güvenlik duvarı yönetim aracıdır. Bu hizmeti başlatacağız ve PostgreSQL bağlantısı için bağlantı noktasını açacağız.

Güvenlik duvarını başlatıp ve aşağıdaki komutları kullanarak sistem önyüklemesinde otomatik olarak başlatılmasını sağlıyoruz:

sudo systemctl start firewalld
sudo systemctl enable firewalld

85.73.178.47 IP’sinden gelen bağlantılar için güvenlik duvarını ayarlıyoruz. Ardından 5432 portunu güvenlik duvarında açıyoruz. Bu yapılan değişikliklerin etkinleşmesi için firewall-cmd’yi yeniden yüklüyoruz:

sudo firewall-cmd --permanent --zone=trusted --add-source=85.73.178.47/32

sudo firewall-cmd --permanent --zone=trusted --add-port=5432/tcp

sudo firewall-cmd --reload

Güvenlik duvarında açık olan portları kontrol etmek için:

firewall-cmd --list-ports

DANIŞMANLIK

Uzmanlık seviyesinde danışmanlık hizmeti verdiğimiz alanlar:

  • PostgreSQL Yönetimi, Performans ve Sorun Giderme
  • Diğer Veritabanlarından PostgreSQL'e Geçiş ve Planlama
  • Replikasyon, Yedekleme ve Felaket kurtarma
  • Veritabanı Güvenliği
  • Uygulama Geliştirme ve Performans Değerlendirme
  • PostgreSQL'de Application Scale-out
  • Veritabanı Mimarisi ve Yapılandırması