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