PostgreSQL topluluğunun, yoğun işlemsel iş yükleri için performansı artırmak ve dağıtılmış veriler için büyük destek sağlamak için yıllar içinde yaptıkları çok etkileyici. PostgresSQL veritabanı uzun yıllardır varlığını sürdürmektedir ve her gün milyonlarca işlem gerçekleştiren uygulamaları güçlendirmek için onu kullanan birçok büyük şirketin güvenini kazanmıştır. Bu makaleyi güncellediğimiz zaman itibariyle, en yeni ve kararlı sürüm PostgreSQL 14’tür.
PostgresSQL veritabanı, 30 yılı aşkın aktif geliştirme ile güvenilirliği, sağlamlığı ve performansı ile iyi bir üne sahiptir. Ayrıca web, mobil uygulamalar, bankacılık uygulamaları, analitik ve diğer birçok uygulama için birincil veri deposu olarak kullanılan SQL uyumlu bir veritabanı yönetim sistemidir.
PostgreSQL 14 sürümü, önceki sürümden birçok yeni özellik ve performans iyileştirme düzeltmesi ve yaması ile birlikte gelir. PostgreSQL 14 sürümündeki dikkate değer özelliklerden bazıları şunlardır:
- Hazırlanan işlemlerin kodunun çözülmesi.
- Devam eden işlemlerin mantıksal olarak çoğaltılması için destek.
- Mantıksal çoğaltma artık verileri ikili biçimde aktarabilir.
- DDL’leri içeren işlemlerin mantıksal kod çözme performansının iyileştirilmesi.
- Mantıksal çoğaltmada tablo senkronizasyonu sırasında artık birden çok işleme izin verilmektedir.
- ALTER SUBSCRIPTION deyimi, artık ADD PUBLICATION ve DROP PUBLICATION seçeneklerinin eklenmesiyle PUBLICATION eklemeyi/kaldırmayı kolaylaştırıyor.
- Prosedürler OUT parametrelerine sahip olabilir.
- CREATE FUNCTION ve CREATE PROCEDURE deyimleri artık SQL dilini desteklemektedir.
- TRUNCATE, postgres_fdw modülünü kullanarak yabancı tablolarda çalışabilir.
- Çok aralıklı veri türleri için destek eklendi.
- pg_amcheck komut satırı yardımcı programı, birçok ilişkide katkıda bulunma/amcheck işlemlerini çalıştırmayı basitleştirmek için eklendi.
- Bazı GiST dizinleri artık verileri önceden sıralayarak oluşturulabilir.
- BRIN dizinleri artık aralık başına birden çok min/maks değeri kaydedebilir.
- BRIN dizinleri artık çiçeklenme filtrelerini kullanabilir.
PostgreSQL 14’ü Ubuntu 22.04’e (Jammy Jellyfish) kurmak için bu makaleyi takip edin. Rehberimiz ayrıca veritabanı yapılandırmalarını, kullanıcı oluşturma, süper kullanıcı parolası belirleme ve uzak bir istemciden veritabanına bağlanmayı da izah edecektir.
Adım: Sistemi güncelleyin ve bağımlılıkları yükleyin
Ubuntu 22.04’ünüzde (Jammy Jellyfish), bir sistem güncellemesi yapın ve yükseltin
sudo apt update && sudo apt -y full-upgrade
Çekirdek güncellemeleri yapıldığında, sistemin yeniden başlatılması gerekecektir:
[ -f /var/run/reboot-required ] && sudo reboot -f
Yeniden başlatmanın ardından PostgreSQL deposunu yapılandırmak için gereken anahtar paketleri kurun.
Gerekli paketleri kurun:
sudo apt install vim curl wget gpg gnupg2 software-properties-common apt-transport-https lsb-release ca-certificates
Adım 2: Ubuntu 22.04’te PostgreSQL deposu ekleyin
Varsayılan işletim sistemi paketi havuzlarında bulunan PostgreSQL sürümü, varsayılan sürüm için güncel değil.
$ apt policy postgresql
Depoyu eklemenizi ve PostgreSQL 14’ü Ubuntu 22.04’ten yüklemenizi öneririz. İmza paketlerinde kullanılan GPG anahtarını içe aktaralım.
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
Aşağıdaki komutları kullanarak PostgreSQL deposunu Ubuntu 22.04 sisteminize ekleyin.
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Yeni eklenen depo hakkında sistemi bilgilendirin.
sudo apt update
Yeni eklenen depo için depo meta veri senkronizasyonu başarılı olmalıdır:
Hit:1 http://apt.postgresql.org/pub/repos/apt jammy-pgdg InRelease
Adım 3: PostgreSQL 14’ü Ubuntu 22.04’e yükleyin
Depoyu eklediğimize göre, aşağıdaki komutlarla PostgreSQL 14’ü kuralım.
sudo apt install postgresql-14
PostgreSQL hizmeti otomatik olarak başlatılmalıdır ve aşağıdaki gibi doğrulanabilir.
$ systemctl status [email protected]
● [email protected] - PostgreSQL Cluster 14-main
Loaded: loaded (/lib/systemd/system/[email protected]; enabled-runtime; vendor preset: enabled)
Active: active (running) since Sat 2022-06-11 11:18:23 EAT; 1min 2s ago
Process: 4139 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 14-main start (code=exited, status=0/SUCCESS)
Main PID: 4144 (postgres)
Tasks: 7 (limit: 9460)
Memory: 18.0M
CPU: 165ms
CGroup: /system.slice/system-postgresql.slice/[email protected]
├─4144 /usr/lib/postgresql/14/bin/postgres -D /var/lib/postgresql/14/main -c config_file=/etc/postgresql/14/main/postgresql.conf
├─4146 "postgres: 14/main: checkpointer " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ">
├─4147 "postgres: 14/main: background writer " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "">
├─4148 "postgres: 14/main: walwriter " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ">
├─4149 "postgres: 14/main: autovacuum launcher " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" >
├─4150 "postgres: 14/main: stats collector " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ">
└─4151 "postgres: 14/main: logical replication launcher " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" >
Jun 11 11:18:21 ubuntu22 systemd[1]: Starting PostgreSQL Cluster 14-main...
Jun 11 11:18:23 ubuntu22 systemd[1]: Started PostgreSQL Cluster 14-main.
lines 1-19/19 (END)
PostgreSQL’in kurulum sürümü aşağıdaki komutlarla kontrol edilebilir.
sudo -u postgres psql -c "SELECT version();"
Örnek Çıktı:
version
---------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 14.3 (Ubuntu 14.3-1.pgdg22.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0, 64-bit
(1 row)
Adım 4: PostgreSQL 14 veritabanına bağlanın.
PostgreSQL yönetim konsoluna erişmenin iki yolu vardır.
- postgres komutunu çalıştırın
$ sudo -u postgres psql
psql (14.3 (Ubuntu 14.3-1.pgdg22.04+1))
Type "help" for help.
postgres=#
Seçenek 2.
Bu seçenek için öncelikle PostgreSQL 14 kurulumu sonrası oluşturulan Postgres kullanıcısına geçiş yapmanız gerekmektedir.
sudo -i -u postgres
Buradayken örneğe bağlanın.
$ psql
psql (14.3 (Ubuntu 14.3-1.pgdg22.04+1))
Type "help" for help.
postgres=#
Şimdi örneğe bağlanmak için kullanılan yukarıdaki yöntemlerden herhangi biriyle, yine de veritabanınızı yönetebilirsiniz.
Adım 5: PostgreSQL 14 uzaktan erişimini yapılandırın (Opsiyonel)
PostgreSQL, roller adı verilen bir kavram aracılığıyla istemci kimlik doğrulaması için birden çok kimlik doğrulama yöntemini destekler. Varsayılan kimlik doğrulama yöntemi, Postgres rolünü bir Unix sistem hesabıyla ilişkilendiren kimlik doğrulamadır. Desteklenen tüm desteklenen kimlik doğrulama yöntemleri şunlardır:
- Ident – yalnızca TCP/IP bağlantıları aracılığıyla desteklenir. İstemci sistem kullanıcı adını isteğe bağlı bir kullanıcı adı eşlemesi ile alır.
- Password – bir rol bir parola kullanarak bağlanır.
- Peer – ident’e benzer, ancak yalnızca yerel bağlantılarda desteklenir.
- Trust – pg_hba.conf içinde tanımlanan koşullar karşılandığı sürece bir rolün bağlanmasına izin verir.
Veritabanı sunucu örneğimize uzaktan erişilebilmesi için /etc/postgresql/14/main/pg_hba.conf dosyasında değişiklik yapmalıyız.
Aşağıdaki komutları çalıştırarak PostgreSQL sunucunuzda parola doğrulamasına izin verin.
sudo sed -i '/^host/s/ident/md5/' /etc/postgresql/14/main/pg_hba.conf
Sonraki, tanımlama yöntemini aşağıdaki gibi eşten güvene değiştirmektir.
sudo sed -i '/^local/s/peer/trust/' /etc/postgresql/14/main/pg_hba.conf
Örneğe her yerden erişilmesine izin vermek için komutu aşağıdaki gibi düzenleyin:
sudo vim /etc/postgresql/14/main/pg_hba.conf
Dosyaya aşağıdaki satırları ekleyin.
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
host all all 0.0.0.0/0 md5
# IPv6 local connections:
host all all ::1/128 scram-sha-256
host all all 0.0.0.0/0 md5
Şimdi /etc/postgresql/14/main/postgresql.conf adresindeki conf dosyasını aşağıdaki gibi düzenleyerek hizmetin * dinlediğinden emin olun.
sudo vim /etc/postgresql/14/main/postgresql.conf
Dosyada, satırı aşağıdaki gibi kaldırın ve düzenleyin.
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#-----------------------------------------------------------------------------
.......
listen_addresses='*'
Değişikliklerin etkili olması için şimdi yeniden başlatın ve PostgreSQL’i etkinleştirin.
sudo systemctl restart postgresql
sudo systemctl enable postgresql
Adım: PostgreSQL 14’te kullanıcıları yönetme
psql komutunu kullanarak PostgreSQL örneğinize bağlanın:
sudo -u postgres psql
Passw0rd şifresi ile admin adında yeni bir süper kullanıcı oluşturacağız.
CREATE ROLE admin WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'Passw0rd';
Kullanıcının gerekli ayrıcalıklarla oluşturulduğunu doğrulayın.
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
admin | Superuser, Create role, Create DB | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
postgres=#
Postgres kabuğundan demo1 adında bir kullanıcı oluşturalım ve ona demodb erişimi atayalım.
create database demodb;
create user demo1 with encrypted password 'Passw0rd';
grant all privileges on database demodb to demo1;
Adım: Uzak PostgreSQL 14 örneğine bağlanma
PostgreSQL hizmetinizin 5432 numaralı bağlantı noktasını dinleyip dinlemediğini kontrol edin.
$ ss -tunelp | grep 5432
tcp LISTEN 0 244 0.0.0.0:5432 0.0.0.0:* uid:123 ino:292971 sk:a <->
tcp LISTEN 0 244 [::]:5432 [::]:* uid:123 ino:292972 sk:d v6only:1 <->
UFW güvenlik duvarınız varsa, bağlantı noktasına uzaktan bağlantı için izin verin.
sudo ufw allow 5432/tcp
Uzak bir istemci makineden psql komutuyla bağlanmak için sözdizimi;
psql 'postgres://<username>:<password>@<host>:<port>/<db>?sslmode=disable'
Bir uzak bağlantının nasıl başlatılabileceğine ilişkin bir örnek olarak aşağıdaki örneği görebilirsiniz.
psql 'postgres://admin:[email protected]:5432/postgres?sslmode=disable'
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.