Di PostgreSQL, semuanya dibangun berdasarkan konsep peran .
Saat pertama kali menginstal PostgreSQL di macOS, skrip membuat peran dengan nama pengguna macOS Anda , dengan daftar izin yang diberikan.
Tidak ada pengguna di PostgreSQL, hanya peran .
Dengan menjalankan psql postgres
di terminal Anda, Anda akan secara otomatis masuk dengan nama pengguna macOS Anda ke PostgreSQL, oleh karena itu mengakses peran yang dibuat.
Dalam kasus saya flaviocopes
role telah dibuat, dan saya dapat melihatnya dengan menggunakan \du
perintah:
Lihat? Saya memiliki atribut peran berikut secara default:
Superuser
Create role
Create DB
Replication
Bypass RLS
dan saya bukan anggota dari peran lain (lebih lanjut tentang ini nanti)
Membuat peran baru
Peran baru dibuat menggunakan CREATE ROLE
perintah:
CREATE ROLE <role>;
Misalnya:
CREATE ROLE testing;
Kami mendapat peran baru, dengan Cannot login
atribut peran. Pengguna kami yang baru dibuat tidak akan dapat masuk.
Anda dapat mencoba dengan mengetikkan \q
perintah, dan kemudian psql postgres -U testing
, tetapi Anda akan melihat kesalahan ini:
Untuk memperbaiki masalah ini kita harus menambahkan LOGIN
atribut peran saat pembuatan:
CREATE ROLE <role> WITH LOGIN;
Jika kami menghapus peran itu menggunakan:
DROP ROLE <role>;
dan tambahkan WITH LOGIN
kali ini:
DROP ROLE testing;
CREATE ROLE testing WITH LOGIN;
Kita dapat melihat bahwa testing
role bisa login, karena kita tidak punya Cannot login
atribut peran kali ini:
Coba dengan menambahkan perintah \q
untuk keluar, lalu psql postgres -U testing
:
Perhatikan bahwa prompt diubah dari =#
ke =>
karena kami tidak memiliki Superuser
atribut peran sekarang.
Menambahkan kata sandi ke peran
Di CREATE ROLE
sebelumnya perintah kami membuat peran tanpa kata sandi. Tentu saja sangat penting untuk memiliki kata sandi (aman). Anda dapat menambahkan kata sandi dengan menggunakan PASSWORD
kata kunci:
CREATE ROLE <role> WITH LOGIN PASSWORD '<password>';
BUAT PENGGUNA
Cara alternatif untuk menentukan peran dengan LOGIN
atribut yang ditambahkan secara otomatis (efektif membuat pengguna yang dapat masuk) adalah dengan menggunakan CREATE USER
:
CREATE USER <role> PASSWORD '<password>';
Menambahkan atribut peran ke peran
Atribut peran dapat ditambahkan nanti ke peran menggunakan ALTER ROLE
perintah.
Misalkan kita membuat peran tanpa atribut LOGIN:
CREATE ROLE <username> PASSWORD '<password>';
Kita dapat menambahkannya menggunakan:
ALTER ROLE <role> WITH LOGIN;
Atribut peran bawaan
Kami melihat LOGIN
atribut role sudah, untuk mengizinkan peran login.
Tapi apa atribut peran bawaan lainnya yang bisa kita gunakan?
LOGIN
/NOLOGIN
:izinkan (atau tidak) masuk ke PostgreSQLSUPERUSER
/NOSUPERUSER
:izinkan (atau tidak) izin pengguna super. Pengguna super basis data akan melewati pemeriksaan izin lainnya, kecuali untukLOGIN
(harus diberikan secara terpisah).CREATEDB
/NOCREATEDB
:mengizinkan (atau tidak) kemampuan untuk membuat database baruCREATEROLE
/NOCREATEROLE
:mengizinkan (atau tidak) kemampuan untuk membuat peran baruCREATEUSER
/NOCREATEUSER
:mengizinkan (atau tidak) kemampuan untuk membuat pengguna baruINHERIT
/NOINHERIT
:mengizinkan (atau tidak) kemampuan untuk membuat hak istimewa dapat diwarisiREPLICATION
/NOREPLICATION
:berikan (atau tidak) izin replikasi (topik lanjutan yang tidak akan kami bahas)
Peran grup
Di PostgreSQL, tidak ada grup pengguna.
Sebagai gantinya, Anda dapat membuat peran dengan izin tertentu, lalu memberikan peran tersebut ke peran lain.
Peran akan mewarisi izin peran yang diberikan kepada mereka, jika peran tersebut memiliki atribut INHERIT.
Buat peran grup
Untuk membuat peran grup, ketik
CREATE ROLE <groupname>;
Sintaksnya sama dengan membuat peran.
Setelah peran grup dibuat, Anda dapat menambahkan peran ke peran grup menggunakan GRANT
:
GRANT <groupname> TO <role>
Misalnya, kita dapat membuat flavio
peran pengguna, peran grup "karyawan", dan menetapkan pengguna ke peran grup:
CREATE USER flavio PASSWORD 'superSecret123$';
CREATE ROLE employee;
GRANT employee TO flavio;
Anda dapat menghapus peran dari peran grup menggunakan:
REVOKE <groupname> FROM <username>
Contoh:
REVOKE employee FROM flavio;
Atribut peran grup
Secara default, menambahkan peran ke peran grup tidak membuat peran mewarisi atribut (izin) dari peran grup.
Anda perlu membuat peran grup dengan INHERIT
atribut.
Misalkan Anda membuat peran grup karyawan, dan menetapkannya sebagai CREATEDB
atribut:
CREATE ROLE employee WITH CREATEDB INHERIT;
Sekarang buat peran baru menggunakan INHERIT
:
CREATE ROLE flavio;
GRANT employee TO flavio;