All Products
Search
Document Center

PolarDB:Kelola role dan izin

Last Updated:Aug 28, 2026

Topik ini menjelaskan sintaks untuk mengelola role dan izin serta menyertakan contoh terkait.

PolarDB-X kompatibel dengan role-based access control bawaan MySQL 8.0. Untuk informasi selengkapnya, lihat dokumentasi MySQL tentang role-based access control.

Buat role

Sintaks:

CREATE ROLE role [, role]...
Sebuah role, seperti user, terdiri atas nama dan host.
  • Nama tidak boleh kosong.
  • Host harus memenuhi aturan berikut:
    • Host dapat berupa alamat IP atau hostname. Karakter tanda persen (%) dan garis bawah (_) berfungsi sebagai wildcard.
    • Jika host tidak ditentukan, nilai default-nya adalah '%', yang berfungsi sebagai wildcard yang cocok dengan semua host.

Contoh:

CREATE ROLE 'role_ro'@'%', 'role_write';

Hapus role

Sintaks:

DROP ROLE role [, role] ...

Contoh:

DROP ROLE 'role_ro'@'%';

Berikan role

Berikan izin kepada role

Sintaks:

GRANT priv_type [, priv_type] ... ON priv_level TO role [, role]... [WITH GRANT OPTION]

Contoh:

GRANT ALL PRIVILEGES ON db1.* TO 'role_write';
Berikan role kepada user

Sintaks:

GRANT role [, role] ...
    TO user_or_role [, user_or_role] ...
    [WITH ADMIN OPTION]
Catatan:
  • Untuk menjalankan perintah ini, Anda harus memenuhi salah satu kondisi berikut:
    • User saat ini memiliki izin CREATE_USER.
    • User saat ini telah diberikan role tersebut dengan opsi ADMIN OPTION.
  • Jika Anda menyertakan klausa WITH ADMIN OPTION, penerima dapat memberikan role tersebut kepada user lain.
  • Pemberian role kepada user tidak secara otomatis mengaktifkan izinnya. Anda harus menggunakan SET DEFAULT ROLE atau SET ROLE untuk mengaktifkan role tersebut.

Contoh:

GRANT 'role_write' TO 'user1'@'127.0.0.1';
Tetapkan role default

Sintaks:

SET DEFAULT ROLE
    {NONE | ALL | role [, role ] ...}
    TO user [, user ] ...
Untuk menjalankan perintah ini, Anda harus memenuhi salah satu kondisi berikut:
  • Role yang ditentukan harus sudah diberikan kepada user target.
  • Anda adalah user target tersebut, atau Anda memiliki izin CREATE_USER.

Contoh:

SET DEFAULT ROLE 'role_write' TO 'user1'@'127.0.0.1';
Tetapkan role sesi

Sintaks:

SET ROLE {
    DEFAULT
  | NONE
  | ALL
  | ALL EXCEPT role [, role ] ...
  | role [, role ] ...
}
Catatan
  • Jika Anda menjalankan pernyataan SET ROLE DEFAULT, role aktif adalah role yang ditentukan dalam pernyataan SET DEFAULT ROLE.
  • Role yang diaktifkan dengan sintaks ini hanya berlaku untuk sesi saat ini.

Contoh:

SET ROLE 'role_write';

Melihat izin peran

Sintaks:

SHOW GRANTS
    [FOR user_or_role
        [USING role [, role] ...]]

Contoh:

SHOW GRANTS FOR 'role_write'@'%';
+---------------------------------------------------+
| GRANTS FOR 'ROLE_WRITE'@'%'                       |
+---------------------------------------------------+
| GRANT USAGE ON *.* TO 'role_write'@'%'            |
| GRANT ALL PRIVILEGES ON db1.* TO 'role_write'@'%' |
+---------------------------------------------------+

SHOW GRANTS FOR 'user1'@'127.0.0.1' USING 'role_write';
+------------------------------------------------------+
| GRANTS FOR 'USER1'@'127.0.0.1'                       |
+------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user1'@'127.0.0.1'            |
| GRANT ALL PRIVILEGES ON db1.* TO 'user1'@'127.0.0.1' |
| GRANT 'role_write'@'%' TO 'user1'@'127.0.0.1'        |
+------------------------------------------------------+

-- Jalankan dalam sesi sebagai user1
SELECT CURRENT_ROLE();
+------------------+
| CURRENT_ROLE()   |
+------------------+
| 'role_write'@'%' |
+------------------+

Cabut role

Cabut izin dari role

Sintaks:

REVOKE priv_type [, priv_type] ... ON priv_level FROM role [, role]...

Contoh:

REVOKE ALL PRIVILEGES ON db1.* FROM 'role_write';

SHOW GRANTS FOR 'role_write'@'%';
+----------------------------------------+
| GRANTS FOR 'ROLE_WRITE'@'%'            |
+----------------------------------------+
| GRANT USAGE ON *.* TO 'role_write'@'%' |
+----------------------------------------+
Cabut role dari user

Sintaks:

REVOKE role [, role ] ... FROM user_or_role [, user_or_role ] ...

Contoh:

SHOW GRANTS FOR 'user1'@'127.0.0.1';
+-----------------------------------------------+
| GRANTS FOR 'USER1'@'127.0.0.1'                |
+-----------------------------------------------+
| GRANT USAGE ON *.* TO 'user1'@'127.0.0.1'     |
| GRANT SELECT ON db1.* TO 'user1'@'127.0.0.1'  |
| GRANT 'role_write'@'%' TO 'user1'@'127.0.0.1' |
+-----------------------------------------------+

REVOKE 'role_write' FROM 'user1'@'127.0.0.1';

SHOW GRANTS FOR 'user1'@'127.0.0.1';
+----------------------------------------------+
| GRANTS FOR 'USER1'@'127.0.0.1'               |
+----------------------------------------------+
| GRANT USAGE ON *.* TO 'user1'@'127.0.0.1'    |
| GRANT SELECT ON db1.* TO 'user1'@'127.0.0.1' |
+----------------------------------------------+