All Products
Search
Document Center

PolarDB:GRANT

Last Updated:Mar 29, 2026

Memberikan hak istimewa pada objek database, keanggotaan role, atau izin tingkat sistem.

Sintaksis

Hak istimewa objek (tabel, view, sequence, atau program):

GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES }
  [,...] | ALL [ PRIVILEGES ] }
  ON tablename
  TO { username | groupname | PUBLIC } [, ...]
  [ WITH GRANT OPTION ]

GRANT { { INSERT | UPDATE | REFERENCES } (column [, ...]) }
  [, ...]
  ON tablename
  TO { username | groupname | PUBLIC } [, ...]
  [ WITH GRANT OPTION ]

GRANT { SELECT | ALL [ PRIVILEGES ] }
  ON sequencename
  TO { username | groupname | PUBLIC } [, ...]
  [ WITH GRANT OPTION ]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
  ON FUNCTION progname
    ( [ [ argmode ] [ argname ] argtype ] [, ...] )
  TO { username | groupname | PUBLIC } [, ...]
  [ WITH GRANT OPTION ]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
  ON PROCEDURE progname
    [ ( [ [ argmode ] [ argname ] argtype ] [, ...] ) ]
  TO { username | groupname | PUBLIC } [, ...]
  [ WITH GRANT OPTION ]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
  ON PACKAGE packagename
  TO { username | groupname | PUBLIC } [, ...]
  [ WITH GRANT OPTION ]

Keanggotaan peran:

GRANT role [, ...]
  TO { username | groupname | PUBLIC } [, ...]
  [ WITH ADMIN OPTION ]

Hak istimewa sistem:

GRANT { CONNECT | RESOURCE | DBA } [, ...]
  TO { username | groupname } [, ...]
  [ WITH ADMIN OPTION ]

GRANT CREATE [ PUBLIC ] DATABASE LINK
  TO { username | groupname }

GRANT DROP PUBLIC DATABASE LINK
  TO { username | groupname }

GRANT EXEMPT ACCESS POLICY
  TO { username | groupname }

Parameter

ParameterDeskripsi
SELECTMengizinkan membaca baris dari tabel, view, atau sequence.
INSERTMengizinkan menyisipkan baris ke dalam tabel.
UPDATEMengizinkan memperbarui baris dalam tabel.
DELETEMengizinkan menghapus baris dari tabel.
REFERENCESMengizinkan membuat kendala kunci asing yang mereferensi tabel atau kolom tertentu.
EXECUTEMengizinkan memanggil fungsi, prosedur, atau package.
ALL [PRIVILEGES]Memberikan semua hak istimewa yang berlaku untuk tipe objek tersebut. PRIVILEGES bersifat opsional.
tablenameTabel atau view tempat hak istimewa diberikan.
sequencenameSequence tempat hak istimewa diberikan.
prognameNama fungsi atau prosedur.
packagenameNama package.
usernamePengguna yang menerima hak istimewa.
groupnameKelompok yang menerima hak istimewa.
PUBLICMemberikan hak istimewa kepada semua pengguna.
WITH GRANT OPTIONMengizinkan penerima untuk memberikan hak istimewa yang sama kepada pihak lain. Tidak dapat diberikan kepada PUBLIC.
WITH ADMIN OPTIONMengizinkan penerima untuk memberikan role tersebut kepada pengguna lain.
CONNECTRole bawaan yang kompatibel dengan Oracle yang mengizinkan pengguna terhubung ke database.
RESOURCERole bawaan yang kompatibel dengan Oracle yang mengizinkan pengguna membuat objek database.
DBARole bawaan yang kompatibel dengan Oracle dengan hak administratif penuh.

Deskripsi

GRANT memiliki tiga varian:

  • Hak istimewa objek: Memberikan hak istimewa tertentu (SELECT, INSERT, UPDATE, DELETE, REFERENCES, atau EXECUTE) pada tabel, view, sequence, fungsi, prosedur, atau package kepada pengguna, kelompok, atau semua pengguna (PUBLIC).

  • Keanggotaan Peran: Tambahkan pengguna atau kelompok sebagai anggota suatu peran agar mereka mewarisi hak istimewa yang dimiliki peran tersebut.

  • Hak istimewa sistem: Memberikan role sistem yang kompatibel dengan Oracle (CONNECT, RESOURCE, DBA) atau izin tingkat sistem tertentu, seperti membuat atau menghapus database link dan mengecualikan kebijakan akses.

Pengguna, kelompok, dan role

Di PolarDB for PostgreSQL (kompatibel dengan Oracle), pengguna dan kelompok disatukan menjadi satu tipe entitas yang disebut role:

  • Pengguna adalah role dengan atribut LOGIN. Role ini dapat membuat sesi dan terhubung ke aplikasi.

  • Kelompok adalah role tanpa atribut LOGIN. Role ini tidak dapat membuat sesi atau terhubung ke aplikasi.

Sebuah role dapat menjadi anggota satu atau beberapa role lain, dan pengguna dapat menjadi anggota baik pengguna maupun kelompok, membentuk hierarki multi-level umum. Karena nama pengguna dan nama kelompok berbagi namespace yang sama, GRANT tidak membedakan keduanya—sintaksisnya identik untuk keduanya.

Catatan penggunaan

  • ALL PRIVILEGES dengan opsi grant yang tidak mencukupi: Jika Anda hanya memiliki sebagian opsi grant pada suatu objek, GRANT ALL PRIVILEGES hanya memberikan hak istimewa yang Anda miliki opsi grant-nya dan mengeluarkan peringatan untuk sisanya. Perintah ini tidak gagal sepenuhnya.

  • Hak istimewa tingkat kolom vs. tingkat tabel: Pengguna dapat melakukan INSERT atau UPDATE pada suatu kolom jika mereka memiliki hak istimewa tersebut baik di tingkat kolom maupun di tingkat tabel. Mencabut hak istimewa tingkat kolom tidak menghapus hak istimewa tingkat tabel yang sudah ada untuk kolom tersebut.

  • PUBLIC dan WITH GRANT OPTION: Opsi grant tidak dapat diberikan kepada PUBLIC. Hanya role bernama yang dapat menerima opsi grant.

  • Grant oleh non-pemilik: Jika Anda bukan pemilik suatu objek tetapi memiliki beberapa hak istimewa dengan opsi grant, GRANT berhasil hanya untuk hak istimewa tersebut. Jika Anda sama sekali tidak memiliki opsi grant, perintah tersebut gagal.

Contoh

Memberikan hak istimewa tabel

Berikan hak SELECT dan INSERT pada tabel orders kepada pengguna alice:

GRANT SELECT, INSERT ON orders TO alice;

Setelah pemberian ini, alice dapat membaca dan menyisipkan baris di orders, tetapi tidak dapat memperbarui atau menghapusnya.

Memberikan hak istimewa tingkat kolom

Berikan hak UPDATE pada kolom tertentu dari tabel employees kepada pengguna bob:

GRANT UPDATE (salary, department_id) ON employees TO bob;

bob dapat memperbarui salary dan department_id, tetapi tidak kolom lainnya.

Memberikan hak dengan izin untuk memberikan kembali

Berikan hak SELECT pada tabel products kepada pengguna carol, dan izinkan dia memberikan hak yang sama kepada pihak lain:

GRANT SELECT ON products TO carol WITH GRANT OPTION;

Memberikan keanggotaan role

Tambahkan pengguna dave sebagai anggota role reporting_role:

GRANT reporting_role TO dave;

dave mewarisi semua hak istimewa yang dimiliki oleh reporting_role.

Memberikan role sistem

Berikan role sistem CONNECT dan RESOURCE kepada pengguna eve:

GRANT CONNECT, RESOURCE TO eve;

Memberikan hak istimewa database link

Izinkan pengguna frank membuat database link publik:

GRANT CREATE PUBLIC DATABASE LINK TO frank;