All Products
Search
Document Center

PolarDB:Sistem Akun dan Izin

Last Updated:Aug 28, 2026

Sistem akun dan izin PolarDB-X kompatibel dengan MySQL dan mendukung pernyataan seperti GRANT, REVOKE, SHOW GRANTS, CREATE USER, DROP USER, dan SET PASSWORD.

Akun

Account Permissions

Akun diidentifikasi oleh kombinasi username dan hostname dalam format username@'host'. Akun dengan username yang sama tetapi hostname berbeda merupakan akun yang berbeda. Misalnya, lily@30.9.73.96 dan lily@30.9.73.100 adalah dua akun terpisah dan dapat memiliki password serta izin yang berbeda.

Setelah Anda membuat database di Konsol PolarDB-X, sistem secara otomatis membuat dua akun sistem untuk database tersebut: akun administrator dan akun read-only. Anda tidak dapat menghapus akun bawaan ini atau mengubah izinnya.

  • Nama akun administrator sama dengan nama database. Misalnya, jika database bernama easydb, maka akun administrator juga bernama easydb.
  • Nama akun read-only adalah nama database yang diakhiri dengan _RO. Misalnya, jika database bernama easydb, maka akun read-only bernama easydb_RO.

Misalnya, jika Anda memiliki dua database, dreamdb dan andordb, database dreamdb memiliki akun administrator bernama dreamdb dan akun read-only bernama dreamdb_RO. Database andordb memiliki akun administrator bernama andordb dan akun read-only bernama andordb_RO.

Catatan Akun yang dibuat menggunakan pernyataan CREATE USER di PolarDB-X hanya ada di dalam PolarDB-X. Akun tersebut tidak terkait dengan ApsaraDB RDS dan tidak disinkronkan ke instans backend ApsaraDB RDS.

Account rules

  • Akun administrator memiliki semua izin.
  • Hanya akun administrator yang dapat membuat akun lain dan memberikan izin.
  • Akun administrator terikat pada database tertentu dan tidak memiliki izin untuk database lain. Saat melakukan koneksi, akun hanya dapat mengakses database yang terkait dengannya. Akun tersebut tidak dapat memberikan izin untuk database lain. Misalnya, akun administrator easydb hanya dapat terhubung ke database easydb dan hanya dapat memberikan izin pada database easydb atau tabel-tabelnya kepada akun lain.
  • Akun read-only hanya memiliki izin SELECT.

Konvensi penamaan

  • Username bersifat case-sensitive.
  • Terdiri dari 4 hingga 20 karakter.
  • Harus dimulai dengan huruf.
  • Dapat berisi huruf kapital, huruf kecil, dan angka.

Aturan kata sandi

  • Terdiri dari 6 hingga 20 karakter.
  • Dapat berisi huruf kapital, huruf kecil, angka, dan karakter khusus berikut: @#$%^&+=.

Aturan pencocokan host

  • Host harus berupa alamat IP. Anda dapat menggunakan wildcard _ dan %. Wildcard _ mencocokkan satu karakter, sedangkan wildcard % mencocokkan nol atau lebih karakter. Host yang mengandung wildcard harus diapit tanda petik tunggal ('), misalnya lily@'30.9.%.%' atau david@'%'.
  • Jika upaya login cocok dengan dua akun, akun dengan awalan alamat IP yang paling panjang akan diprioritaskan. Awalan tersebut adalah bagian dari alamat IP sebelum wildcard apa pun. Misalnya, jika sistem memiliki dua akun, david@'30.9.12_.xxx' dan david@'30.9.1%.234', upaya login oleh pengguna david dari host 30.9.127.xxx akan menggunakan akun david@'30.9.12_.xxx'.
  • Ketika VPC diaktifkan, alamat IP host berubah.
    Penting Untuk mencegah konfigurasi akun dan izin menjadi tidak valid, atur HOST ke '%' agar cocok dengan alamat IP apa pun.

Izin

Tingkat izin

  • tingkat database (Didukung)
  • tingkat tabel (Didukung)
  • tingkat global (Belum didukung)
  • tingkat kolom (Belum didukung)
  • tingkat subprogram (Belum didukung)

Izin yang didukung

PolarDB-X mendukung delapan izin dasar tingkat tabel: CREATE, DROP, ALTER, INDEX, INSERT, DELETE, UPDATE, dan SELECT.

  • Pernyataan TRUNCATE memerlukan izin DROP pada tabel.
  • Pernyataan REPLACE memerlukan izin INSERT dan DELETE pada tabel.
  • Pernyataan CREATE INDEX dan DROP INDEX memerlukan izin INDEX pada tabel.
  • Pernyataan CREATE SEQUENCE memerlukan izin CREATE pada tingkat database.
  • Pernyataan DROP SEQUENCE memerlukan izin DROP pada tingkat database.
  • Pernyataan ALTER SEQUENCE memerlukan izin ALTER pada tingkat database.
  • Pernyataan INSERT ON DUPLICATE UPDATE memerlukan izin INSERT dan UPDATE pada tabel.

Aturan izin

  • Izin terikat pada akun (username@'host'), bukan hanya username.
  • Saat Anda memberikan izin, sistem memverifikasi bahwa tabel yang ditentukan ada. Jika tidak ada, sistem akan mengembalikan error.
  • Tingkat izin bersifat hierarkis, dari yang tertinggi ke terendah: tingkat global (belum didukung), tingkat database, tingkat tabel, dan tingkat kolom.
  • Pemberian izin tingkat lebih tinggi mengesampingkan izin tingkat lebih rendah. Pencabutan izin tingkat lebih tinggi juga mencabut izin tingkat lebih rendah yang terkait.
  • Izin USAGE tidak didukung.

Pemberian izin multi-database

Di PolarDB-X versi 5.3.6 dan yang lebih baru, Anda dapat memberikan izin pada beberapa database kepada satu akun:
  • Di halaman Manajemen Akun di Konsol Alibaba Cloud PolarDB-X, buat akun dan berikan izin. Ini adalah metode yang direkomendasikan.
  • Sebagai alternatif, gunakan pernyataan SQL CREATE USER dan GRANT.
    Catatan Jika Anda menggunakan pernyataan SQL, perhatikan hal berikut:
    1. Hanya akun administrator yang dapat membuat pengguna dan memberikan izin.
    2. Administrator hanya dapat memberikan izin pada database yang dikelolanya. Misalnya, jika administrator database A membuat akun new_user@'%', dan Anda ingin akun ini mengakses database A dan B, administrator A harus memberikan izin untuk A, dan administrator B harus memberikan izin untuk B.

Menggunakan akun multi-database

Di PolarDB-X versi 5.3.6 dan yang lebih baru, Anda dapat memberikan izin pada beberapa database kepada satu akun. Misalkan akun seperti new_user@'%' memiliki izin SELECT dan INSERT pada database A dan database B. Batasan berikut berlaku:
  • Untuk mengkueri tabel di database B saat terhubung ke database A, Anda harus terlebih dahulu mengganti database dengan menjalankan USE B; SELECT * FROM table_in_B;. Kueri lintas database seperti SELECT * FROM B.table_in_B; tidak didukung.
  • Untuk memasukkan data ke tabel di database B saat terhubung ke database A, Anda harus menjalankan USE B; INSERT INTO table_in_B VALUES('value');. Penyisipan lintas database seperti INSERT INTO B.table_in_B VALUES('value'); tidak didukung.
  • Prinsip yang sama berlaku untuk pernyataan SQL lainnya.

Pernyataan

Membuat akun (CREATE USER)
  • Sintaks
    CREATE USER user_specification [, user_specification] ...
    user_specification: user [ auth_option ]
    auth_option: IDENTIFIED BY 'auth#string'
                
  • Contoh
    • Buat akun bernama lily dengan password 123456. Akun ini hanya dapat terhubung dari host 30.9.73.96.
      CREATE USER lily@30.9.73.96 IDENTIFIED BY '123456';        
    • Buat akun bernama david yang dapat terhubung dari host mana pun. Akun ini tidak memiliki password.
      CREATE USER david@'%'; 
Menghapus akun (DROP USER)
  • Sintaks
    DROP USER user [, user] ...    
  • Contoh

    Hapus akun lily@30.9.73.96:

    DROP USER lily@30.9.73.96;       
Mengubah password akun (SET PASSWORD)
  • Sintaks
    SET PASSWORD FOR user = password_option
    
    password_option: {
        PASSWORD('auth_string')
    }        
  • Contoh
    Ubah password untuk akun lily@30.9.73.96 menjadi 123456.
    SET PASSWORD FOR lily@30.9.73.96 = PASSWORD('123456')         

Memberikan izin kepada akun (GRANT)

  • Sintaks
    GRANT
        priv_type[, priv_type] ...
        ON priv_level
        TO user_specification [, user_specification] ...
        [WITH GRANT OPTION]
    priv_level: {
      | db_name.*
      | db_name.tbl_name
      | tbl_name
    }
    user_specification:
        user [ auth_option ]
    auth_option: {
        IDENTIFIED BY 'auth#string'
    }
                
    Catatan Jika akun dalam pernyataan GRANT tidak ada, pernyataan tersebut gagal kecuali Anda menyertakan klausa IDENTIFIED BY. Jika klausa IDENTIFIED BY disediakan, sistem akan membuat akun dan memberikan izin yang ditentukan.
  • Contoh
    • Untuk database easydb, buat akun bernama david yang dapat terhubung dari host mana pun dan memiliki semua izin pada database tersebut.
      # Metode 1: Buat akun, lalu berikan izin.
      CREATE USER david@'%' IDENTIFIED BY 'your#password';
      GRANT ALL PRIVILEGES ON easydb.* to david@'%';
      
      # Metode 2: Buat akun dan berikan izin dalam satu pernyataan.
      GRANT ALL PRIVILEGES ON easydb.* to david@'%' IDENTIFIED BY 'your#password';
    • Untuk database easydb, buat akun bernama hanson yang dapat terhubung dari host mana pun dan memiliki semua izin pada tabel easydb.employees.
      GRANT ALL PRIVILEGES ON easydb.employees to hanson@'%' 
      IDENTIFIED BY 'your#password';    
    • Untuk database easydb, buat akun bernama hanson yang hanya dapat terhubung dari host 192.168.3.10 dan memiliki izin INSERT dan SELECT pada tabel easydb.emp.
      GRANT INSERT,SELECT ON easydb.emp to hanson@'192.168.3.10' 
      IDENTIFIED BY 'your#password';
    • Untuk database easydb, buat akun read-only bernama actro yang dapat terhubung dari host mana pun.
      GRANT SELECT ON easydb.* to actro@'%' IDENTIFIED BY 'your#password';          
Mencabut izin (REVOKE)
  • Sintaks
    • Mencabut izin tertentu dari akun pada tingkat izin yang ditentukan oleh priv_level.
      REVOKE
      priv_type
      [, priv_type] ...
      ON priv_level         
    • Mencabut semua izin tingkat database dan tingkat tabel dari pengguna.
      REVOKE ALL PRIVILEGES, GRANT OPTION
      FROM user [, user] ...           
  • Contoh
    • Cabut izin CREATE, DROP, dan INDEX pada tabel easydb.emp dari akun hanson@'%'.
      REVOKE CREATE,DROP,INDEX ON easydb.emp FROM hanson@'%';      
    • Cabut semua izin dari akun lily@30.9.73.96.
      REVOKE ALL PRIVILEGES,GRANT OPTION FROM lily@30.9.73.96;       
      Catatan Untuk memastikan kompatibilitas dengan MySQL, Anda harus menyertakan klausa GRANT OPTION.
Menampilkan izin (SHOW GRANTS)
  • Sintaks
    SHOW GRANTS[ FOR user@host];           
  • Contoh
    SHOW GRANTS FOR user1@host;       
Catatan Di PolarDB-X versi 5.3.6 dan yang lebih baru, pernyataan SHOW GRANTS hanya menampilkan izin untuk pengguna saat ini. Untuk melihat informasi tentang semua akun dan izin, gunakan Konsol Alibaba Cloud PolarDB-X.