PostgreSQL, herhangi bir veritabanı türünü korumanın etkili bir yolu olan ayrıcalıklı erişim yönetimi aracılığıyla erişim kontrolünü yönetir. Kullanıcılar, createuser istemci yardımcı programı ve yerel psql arayüzü ile PostgreSQL kullanıcı hesaplarını oluşturur ve yönetir.
Bu eğitimde PostgreSQL veritabanı için farklı kullanıcı türlerinin nasıl oluşturulacağı ve ayarlanacağı gösterilmektedir.
Önkoşullar
- PostgreSQL kurulu Ubuntu veya Windows
- Sudo ayrıcalıklarıyla komut satırı aracı erişimi.
- Postgres süper kullanıcısına erişim.
PostgreSQL’de Yeni Kullanıcı Oluşturma
PostgreSQL’de yeni bir kullanıcı oluşturmak, postgres kullanıcısına erişim gerektirir. Postgres kullanıcısı, PostgreSQL kurulumu sırasında otomatik olarak oluşturulan bir süper yöneticidir.
Aşağıdaki bölümlerde, createuser komutu ve psql komut satırı arayüzü aracılığıyla PostgreSQL’de kullanıcı oluşturmaya yönelik adımlar verilmektedir.
Yöntem 1: createuser İstemci Programını Kullanma
İstemci yardımcı programı yöntemi, psql’ye bağlanmaya gerek kalmadan kullanıcı yönetimine olanak tanır. Bir kullanıcı oluşturmak için terminalde aşağıdaki komutu çalıştırın:
sudo -u postgres createuser [name]
İşlem başarılı olursa terminal bir çıktı yazdırmaz. Sunucu mesajını göstermek için -e etiketini ekleyin:
sudo -u postgres createuser -e [name]
Örneğin:
sudo -u postgres createuser -e john
Alternatif olarak komutu iki parçaya bölebilirsiniz:
1. Postgres kullanıcısına geçin:
sudo su - postgres
2. Createuser komutunu çalıştırın:
createuser [name]
Her iki durumda da PostgreSQL kullanıcıyı (yani oturum açma izinlerine sahip rolü) otomatik olarak oluşturur.
Yöntem 2: psql kullanma
PostgreSQL’de yeni bir kullanıcı oluşturmanın başka bir yolu da etkileşimli psql kabuğudur.
1. Postgres kullanıcısına geçin ve etkileşimli terminali şununla başlatın:
sudo -u postgres psql
İstem, Postgres kabuğuna başarılı bir bağlantı kurulduğunu belirtmek için postgres=# olarak değişir.
2. Bir kullanıcı oluşturmak için aşağıdaki ifadeyi kullanın:
CREATE USER [name];
Örneğin:
CREATE USER mary;
Komutun çalıştırılması konsolda CREATE ROLE yazdırır. Bunun nedeni, CREATE USER sorgusunun aşağıdaki komut için bir takma ad olmasıdır:
CREATE ROLE [name] WITH LOGIN;
Her iki sorgu da aynı sonucu verir.
PostgreSQL’de Süper Kullanıcı Oluşturun
PostgreSQL’de süper kullanıcı oluşturmak için süper kullanıcı rolüne sahip olmanız gerekir.
Uyarı: Bir veritabanı süper kullanıcısı, güvenlik açısından tehlikeli olan tüm kontrolleri atlar. Bu işlemi dikkatli kullanın ve gerekmedikçe süper kullanıcı hesabıyla çalışmaktan kaçının.
PostgreSQL’de süper kullanıcı oluşturmanın iki yöntemi şunlardır:
Yöntem 1: createuser Komutu
–superuser etiketini ekleyerek istemci yardımcı programı aracılığıyla bir süper kullanıcı rolü oluşturun:
sudo -u postgres createuser --superuser [name]
Veya –superuser yerine -s kısayol etiketini kullanın:
sudo -u postgres createuser -s [name]
Bir hata meydana gelirse veya kullanıcı zaten mevcutsa terminal bir mesaj verir. İşlem başarılı olursa herhangi bir mesaj görüntülenmez.
Yöntem 2: psql Etkileşimli Kabuğu
Alternatif olarak, psql’de aşağıdaki CREATE USER deyimiyle bir süper kullanıcı oluşturun:
CREATE USER [name] SUPERUSER;
CREATE USER aşağıdaki ifadenin takma adıdır:
CREATE ROLE [name] LOGIN SUPERUSER;
CREATE ROLE ifadesi, bir kullanıcıyı taklit etmek için LOGIN izninin eklenmesini gerektirir.
Kullanıcı için Şifre Oluşturma
Kaba kuvvet saldırılarını önlemek için her veritabanı kullanıcısının güçlü bir parolaya sahip olması gerekir. PostgreSQL, şifreli bir kullanıcı oluşturmak için iki yöntem sunar.
Not: Şifre oluşturmak için createuser yardımcı programı tercih edilir çünkü daha güvenlidir.
Yöntem 1: createuser Komutu
Otomatik olarak parola oluşturma istemini çağırmak için createuser komutunu kullanın ve –pwprompt seçeneğini ekleyin:
sudo -u postgres createuser [name] --pwprompt
Kısa versiyon -P etiketidir:
sudo -u postgres createuser [name] -P
Terminal kullanıcıdan iki kez şifre girmesini ister. Sunucuyla iletişim kurulurken şifre şifrelenir ve gizlenir.
Yöntem 2: psql Etkileşimli Kabuğu
Parolası olan bir kullanıcı oluşturmak için psql kullanın:
CREATE USER [name] WITH PASSWORD '[password]';
Kullanıcı zaten mevcutsa ALTER USER ifadesini kullanarak parolayı ekleyin:
ALTER USER [name] WITH PASSWORD '[password]';
psql aracılığıyla parola yönetimi üç güvenlik açığıyla birlikte gelir:
- Şifre ekranda görünür.
- Komut geçmişini görüntülemek şifreyi açığa çıkarır.
- Bilgiler herhangi bir şifreleme olmaksızın açık metin olarak iletilir.
Bu yöntemi dikkatli kullanın.
Bir Kullanıcıya Ayrıcalıklar Verme
Varsayılan olarak, yeni kullanıcıların oturum açma dışında herhangi bir ayrıcalığı yoktur. Bir kullanıcı oluştururken ayrıcalık eklemek için createuser istemci yardımcı programını aşağıdaki biçimde çalıştırın:
createuser [option] [name]
Aynısını psql’de yapmak için şunu çalıştırın:
CREATE USER [name] WITH [option];
Aşağıda her iki yöntem için de yaygın olarak kullanılan seçeneklerin yer aldığı bir tablo bulunmaktadır.
Option Syntax | psql | Explanation |
---|---|---|
-s --superuser | SUPERUSER | Süper kullanıcı ayrıcalığını ekleyin. |
-S --no-superuser | NOSUPERUSER | Süper kullanıcı ayrıcalığı yok (varsayılan). |
-d --createdb | CREATEDB | Kullanıcının veritabanları oluşturmasına olanak tanır. |
-D --no-createdb | NOCREATEDB | Veritabanları oluşturmaya izin verilmiyor (varsayılan). |
-r --createrole | CREATEROLE | Allows the user to make new roles. |
-R --no-createrole | NOCREATEROLE | Rollerin oluşturulmasına izin verilmiyor (varsayılan). |
-i --inherit | INHERIT | Rollerin ayrıcalıklarını otomatik olarak devralın (varsayılan). |
-I --no-inherit | NOINHERIT | Rollerin ayrıcalıklarını devralmayın. |
-l --login | LOGIN | Kullanıcının rol adıyla (varsayılan) bir oturumda oturum açmasına olanak tanır. |
-L --no-login | NOLOGIN | Rol adıyla bir oturuma giriş yapılmasına izin verilmiyor. |
--replication | REPLICATION | Akış çoğaltmasının başlatılmasına ve yedekleme modunun etkinleştirilmesine/devre dışı bırakılmasına olanak tanır. |
--no-replication | NOREPLICATION | Akış çoğaltma veya yedekleme modunun (varsayılan) başlatılmasına izin verilmez. |
-P --pwprompt | PASSWORD '[password]' | Parola oluşturma istemini başlatır veya kullanıcıya sağlanan parolayı ekler. Parolasız bir kullanıcı oluşturmak için bu seçeneği kullanmaktan kaçının. |
/ | PASSWORD NULL | Özellikle parolayı null olarak ayarlar. Bu kullanıcı için her parola kimlik doğrulaması başarısız olur. |
-c [number ]--connection-limit=[number] | CONNECTION LIMIT [number] | Bir kullanıcı için maksimum bağlantı sayısını ayarlar. Varsayılan sınırsızdır. |
Aşağıdaki örnek, roller ve veritabanları oluşturabilecek bir kullanıcı oluşturur:
sudo -u postgres createuser -d -r -e [name]
Yukarıdaki komutun psql eşdeğeri aşağıdadır:
CREATE USER [name] WITH CREATEROLE CREATEDB;
Her iki durumda da belirtilen ayrıcalıklar yeni kullanıcıya otomatik olarak verilir.
Etkileşimli Olarak PostgreSQL Kullanıcısı Oluşturma
Etkileşimli kullanıcı oluşturma, yalnızca istemci yardımcı programı için kullanılabilen pratik bir seçenektir. Etkileşimli olarak bir kullanıcı oluşturmak için aşağıdaki komutu çalıştırın:
sudo -u postgres createuser --interactive
Komut otomatik olarak aşağıdakileri soran bir soru dizisi başlatır:
- Rolün adı.
- Rolün bir süper kullanıcı olup olmadığı.
- Kullanıcının veritabanları oluşturmasına izin veriliyorsa.
- Kullanıcının başka roller oluşturmasına izin veriliyorsa.
“Veritabanı oluştur” ve “rol oluştur” ayrıcalıklarını eklemek ve istemi sonlandırmak için süper kullanıcı sorusuna evet (y) yanıtı verin.
PostgreSQL’deki Tüm Kullanıcıları Listele
Tüm kullanıcıların ilgili rolleri ve ayrıcalıklarıyla listelenmesi, veritabanı kullanıcı yönetimi için önemlidir.
PostgreSQL dağıtımında bulunan tüm kullanıcıları listelemek için aşağıdakileri yapın:
1. Postgres kullanıcısı olarak psql komut istemine bağlanın:
sudo -u postgres psql
2. Aşağıdaki komutla tüm kullanıcıları listeleyin:
\du
Çıktı, rol adlarını, nitelikleri (ayrıcalıkları) ve kullanıcı gruplarını içeren bir tablo gösterir. Her rolün açıklamasını görüntülemek için artı (+) işaretini ekleyin:
\du+
Çıktı, uygun olduğu yerde rol açıklamasını içeren ek bir sütun gösterir.
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.