Peran PostgreSQL versus pengguna, memberikan izin

27

Saat ini saya sedang mempelajari perbedaan antara PostgreSQL dan MySQL karena saya punya proyek baru dan saya juga bermaksud untuk memigrasikan perangkat lunak yang ada dari MySQL ke PostgreSQL. Saya sebenarnya sudah mulai membuat tabel HTML dengan perbandingan perintah (untuk pengguna / database / command prompt, dll) di antara keduanya. Setelah membaca jawaban di sini saya perhatikan bahwa roletampaknya digunakan sebagai grup. Dengan MySQL Saya memiliki dua pengguna, pada dasarnya masyarakat ( DELETE, INSERT, SELECTdan UPDATEperizinan) dan user admin dengan beberapa izin tambahan.

Jadi pada dasarnya di command prompt Windows 7 (hanya pengembangan lokal) ...

  • Apakah peran pengguna, grup, atau istilah longgar yang digunakan khusus untuk PostgreSQL?
  • Bagaimana cara saya hanya memberikan izin khusus untuk pengguna tertentu, untuk semua tabel dalam database?
  • Bagaimana cara saya memberikan semua izin kepada pengguna tertentu, untuk semua tabel dalam database?
  • Bagaimana, jika sama sekali, peran dibandingkan dengan pengguna saat menggunakan GRANTatau REVOKEuntuk izin pengguna?
John
sumber

Jawaban:

48

Sebuah peran adalah sebuah entitas yang bisa berfungsi sebagai pengguna dan / atau sebagai sebuah kelompok. Peran WITH LOGINdapat digunakan sebagai pengguna, yaitu Anda dapat masuk dengannya. Peran apa pun dapat berfungsi sebagai grup, termasuk peran yang juga dapat Anda masuki. Jadi "pengguna" dan "grup" pada dasarnya adalah istilah yang menunjukkan penggunaan peran yang dimaksudkan, tidak ada perbedaan nyata di antara mereka. Bahkan dalam rasa SQL PostgreSQL keduanya digunakan lebih atau kurang sebagai sinonim. Misalnya, dokumentasi pada CREATE USERmengatakan:

CREATE USER sekarang menjadi alias untuk CREATE ROLE.

Memberikan semua ... lihat manual untukGRANT . Anda mungkin benar-benar ingin memberikan hak ALL TABLES IN SCHEMA publicdaripada semua tabel dalam database.

Memberikan beberapa hak ... hal yang sama, tetapi alih-alih GRANT ALLdigunakan GRANT SELECT, INSERTmisalnya. Sekali lagi, lihat manualnya.

Peran adalah pengguna, dan / atau grup. Anda hanya dapat memberikan peran, karena hanya peran yang ada.

Craig Ringer
sumber
Penjelasan hebat!
sharadov
Jadi ... apa sintaksis untuk memberikan semua hak ke semua tabel di skema publik?
AlxVallejo
@AlxVallejo ini seharusnya membantu . Coba tautan teratas, atau baca GRANThalaman dokumentasi yang berisi daftarALL TABLES IN SCHEMA
Craig Ringer