PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Izin Pengguna PostgreSQL

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 PostgreSQL
  • SUPERUSER / NOSUPERUSER :izinkan (atau tidak) izin pengguna super. Pengguna super basis data akan melewati pemeriksaan izin lainnya, kecuali untuk LOGIN (harus diberikan secara terpisah).
  • CREATEDB / NOCREATEDB :mengizinkan (atau tidak) kemampuan untuk membuat database baru
  • CREATEROLE / NOCREATEROLE :mengizinkan (atau tidak) kemampuan untuk membuat peran baru
  • CREATEUSER / NOCREATEUSER :mengizinkan (atau tidak) kemampuan untuk membuat pengguna baru
  • INHERIT / NOINHERIT :mengizinkan (atau tidak) kemampuan untuk membuat hak istimewa dapat diwarisi
  • REPLICATION / 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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa mengekspor skema database di PostgreSQL?

  2. Tidak dapat menghubungkan PostgreSQL ke basis data jarak jauh menggunakan pgAdmin

  3. Bagaimana Cotd() Bekerja di PostgreSQL

  4. Alternatif pgAdmin - ClusterControl GUI Manajemen Database PostgreSQL

  5. Gabungkan kueri loop bersarang ke hasil larik induk - pg-promise