Linux sunucularda PostreSQL veritabanı işlemleri
Bu yazı 2020 yılından. Anlatılan sürümler, fiyatlar ve adresler o günden bu yana değişmiş olabilir.
Bu yazıda PostgreSQL yüklü Linux sunuculara SSH üzerinden bağlanarak veritabanı oluşturma, kullanıcı oluşturma ve bunu projenize bağlama işlemlerini ele alacağız. Yani bir veritabanı kurduktan sonra "ilk gün" yapılan temel işlemler.
Bu işlemler hem Ubuntu hem CentOS/Rocky/AlmaLinux sunucularda aynı şekilde geçerlidir; komutlar PostgreSQL'in kendi komutları olduğu için dağıtıma göre değişmez. Başlamadan önce sunucunuzda PostgreSQL'in kurulu olduğundan emin olun.
Güncelleme (Kasım 2026): Bu yazıyı 2020'de yazmıştım. O zamandan beri PostgreSQL'in yeni sürümlerinde önemli bir değişiklik oldu: yeni oluşturduğunuz bir kullanıcı, veritabanına yetki verseniz bile tablo oluşturamıyordu. Bunu çözen adımı ve birkaç faydalı komutu ekledim; projeye bağlama kısmındaki eski Django ayarını da düzelttim.
Veritabanı ve kullanıcı oluşturmak
Önce postgres sistem kullanıcısına geçiyoruz. PostgreSQL kurulunca bu kullanıcı otomatik oluşur ve veritabanının yöneticisidir:
sudo -i -u postgresArdından PostgreSQL'in kendi komut satırına (psql) giriyoruz:
psqlArtık postgres=# şeklinde bir komut satırı görüyorsunuz. Buradaki komutlar SQL komutu olduğu için sonlarındaki noktalı virgül önemli, unutmayın. Önce veritabanımızı oluşturuyoruz (veritabani yerine kendi adınızı yazın):
CREATE DATABASE veritabani;Şimdi bu veritabanını kullanacak bir kullanıcı oluşturalım (kullanici ve sifre değerlerini değiştirin):
CREATE USER kullanici WITH PASSWORD 'sifre';Kullanıcımıza bazı önerilen ayarları yapıp veritabanı üzerinde yetki veriyoruz:
ALTER ROLE kullanici SET client_encoding TO 'utf8';
ALTER ROLE kullanici SET default_transaction_isolation TO 'read committed';
ALTER ROLE kullanici SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE veritabani TO kullanici;Yeni sürümlerde gereken ek adım
Burası önemli: PostgreSQL 15 ve üzeri sürümlerde yukarıdaki GRANT tek başına yetmiyor. Kullanıcı veritabanına bağlanabiliyor ama tablo oluşturamıyor, "permission denied for schema public" hatası alıyor. Bunu çözmek için veritabanına geçip kullanıcıya public şeması üzerinde de yetki vermeniz gerekiyor. Önce veritabanına geçin:
\c veritabaniSonra yetkiyi verin:
GRANT ALL ON SCHEMA public TO kullanici;Eski yazıda bu adım yoktu çünkü o zamanki PostgreSQL sürümlerinde buna gerek yoktu.
İşinize yarayacak komutlar
\l -- bütün veritabanlarını listeler
\du -- bütün kullanıcıları listeler
\c veritabani -- başka bir veritabanına geçer
\q -- psql'den çıkarBir veritabanını ya da kullanıcıyı silmek isterseniz:
DROP DATABASE veritabani;
DROP USER kullanici;Projeye bağlamak
Artık veritabanınız ve kullanıcısı hazır. Örnek olarak bir Django projesine bağlamak isterseniz settings.py içindeki ayar şöyle olur:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'veritabani',
'USER': 'kullanici',
'PASSWORD': 'sifre',
'HOST': 'localhost',
'PORT': '5432',
}
}Eski yazıda motor adı
django.db.backends.postgresql_psycopg2yazıyordu; bu isim artık kullanılmıyor, günümüzde doğrusudjango.db.backends.postgresql.