Blog / Makaleler

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:

Terminal
sudo -i -u postgres

Ardından PostgreSQL'in kendi komut satırına (psql) giriyoruz:

Terminal
psql

Artı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):

SQL
CREATE DATABASE veritabani;

Şimdi bu veritabanını kullanacak bir kullanıcı oluşturalım (kullanici ve sifre değerlerini değiştirin):

SQL
CREATE USER kullanici WITH PASSWORD 'sifre';

Kullanıcımıza bazı önerilen ayarları yapıp veritabanı üzerinde yetki veriyoruz:

SQL
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:

SQL
\c veritabani

Sonra yetkiyi verin:

SQL
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

SQL
\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 çıkar

Bir veritabanını ya da kullanıcıyı silmek isterseniz:

SQL
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:

Python
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_psycopg2 yazıyordu; bu isim artık kullanılmıyor, günümüzde doğrusu django.db.backends.postgresql.

Bu yazıyı paylaşXFacebook