Postgres Kullanıcısı Nasıl Oluşturulur

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
sudo -u postgres psql terminal output

İ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;
create user create role output

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 superuser psql

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
postgres createuser password prompt

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]';
alter user with password psql

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 SyntaxpsqlExplanation
-s
--superuser
SUPERUSERSüper kullanıcı ayrıcalığını ekleyin.
-S
--no-superuser
NOSUPERUSERSüper kullanıcı ayrıcalığı yok (varsayılan).
-d
--createdb
CREATEDBKullanıcının veritabanları oluşturmasına olanak tanır.
-D
--no-createdb
NOCREATEDBVeritabanları oluşturmaya izin verilmiyor (varsayılan).
-r
--createrole
CREATEROLEAllows the user to make new roles.
-R
--no-createrole
NOCREATEROLERollerin oluşturulmasına izin verilmiyor (varsayılan).
-i
--inherit
INHERITRollerin ayrıcalıklarını otomatik olarak devralın (varsayılan).
-I
--no-inherit
NOINHERITRollerin ayrıcalıklarını devralmayın.
-l
--login
LOGINKullanıcının rol adıyla (varsayılan) bir oturumda oturum açmasına olanak tanır.
-L
--no-login
NOLOGINRol adıyla bir oturuma giriş yapılmasına izin verilmiyor.
--replicationREPLICATIONAkış çoğaltmasının başlatılmasına ve yedekleme modunun etkinleştirilmesine/devre dışı bırakılmasına olanak tanır.
--no-replicationNOREPLICATIONAkış ç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]
create postgresql user and grant permissions

Yukarıdaki komutun psql eşdeğeri aşağıdadır:

CREATE USER [name] WITH CREATEROLE CREATEDB;
create user grant permissions psql

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
create user 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
du command postgres

Çı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+
du command extended postgres

Çıktı, uygun olduğu yerde rol açıklamasını içeren ek bir sütun gösterir.

Yazının orijinalini buradan okuyabilirsiniz.