全部产品
Search
文档中心

ApsaraDB RDS:Otorisasi akun untuk mengelola tabel, tampilan, dan bidang

更新时间:Jul 06, 2025

Secara default, Anda dapat memberikan izin pada semua data dalam database kepada akun yang dibuat di konsol ApsaraDB RDS. Jika ingin memberikan izin pada tabel, tampilan, atau bidang tertentu dalam instance database ApsaraDB RDS for MySQL, Anda dapat mengeksekusi pernyataan SQL yang diperlukan untuk melakukan otorisasi secara lebih rinci.

Prasyarat

Akun istimewa telah dibuat. Untuk informasi lebih lanjut, lihat Buat Akun.

Prosedur

  1. Gunakan akun istimewa untuk terhubung ke instance RDS menggunakan klien atau CLI.

  2. Eksekusi pernyataan SQL untuk membuat akun dan memberikan otorisasi kepada akun tersebut dalam mengelola tabel, tampilan, serta bidang di dalam database.

    Catatan

    Akun yang dibuat tidak memiliki izin untuk melihat database yang diotorisasi di konsol ApsaraDB RDS.

    1. Buat akun.

      CREATE USER `<Nama pengguna akun>`@`%` IDENTIFIED BY '<Kata sandi akun>';
    2. Berikan izin global, seperti PROCESS dan izin terkait replikasi, kepada akun.

      GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '<Nama pengguna akun>'@'%';
    3. Berikan izin penuh pada tabel dalam database tertentu kepada akun.

      GRANT ALL PRIVILEGES ON `<Nama database>`.`<Nama tabel>` TO '<Nama pengguna akun>'@'%';
    4. Berikan izin baca-saja pada tabel umum yang digunakan dalam database sistem mysql kepada akun.

      GRANT SELECT ON `mysql`.`help_topic` TO '<Nama pengguna akun>'@'%';
      GRANT SELECT ON `mysql`.`func` TO '<Nama pengguna akun>'@'%';
      GRANT SELECT ON `mysql`.`time_zone` TO '<Nama pengguna akun>'@'%';
      GRANT SELECT ON `mysql`.`slow_log` TO '<Nama pengguna akun>'@'%';
      GRANT SELECT ON `mysql`.`proc` TO '<Nama pengguna akun>'@'%';
      GRANT SELECT ON `mysql`.`general_log` TO '<Nama pengguna akun>'@'%';
      -- Berikan izin pada tabel sistem lainnya sesuai dengan kebutuhan bisnis Anda.

      Contoh

      • Otorisasi akun untuk mengelola tabel: Buat akun bernama test01 dan berikan otorisasi akun untuk mengelola tabel test100 dalam database rds001.

        CREATE USER `test01`@`%`IDENTIFIED BY 'passwd';
        GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test01'@'%';
        GRANT ALL PRIVILEGES ON `rds001`.`test100`  TO 'test01'@'%';
        GRANT SELECT ON `mysql`.`help_topic` TO 'test01'@'%';
        GRANT SELECT ON `mysql`.`func` TO 'test01'@'%';
        Catatan

        Jika Anda mengganti test100 dengan asterisk (*), akun tersebut memiliki izin pada semua tabel dalam database rds001 dan dapat melihat database tempat akun tersebut termasuk di konsol ApsaraDB RDS.

      • Otorisasi akun untuk mengelola beberapa tabel: Buat akun bernama test02 dan berikan otorisasi akun untuk mengelola tabel test100, test200, dan test300 dalam database rds001.

        CREATE USER `test02`@`%`IDENTIFIED BY 'passwd';
        GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test02'@'%';
        GRANT ALL PRIVILEGES ON `rds001`.`test100`  TO 'test02'@'%';
        GRANT ALL PRIVILEGES ON `rds001`.`test200`  TO 'test02'@'%';
        GRANT ALL PRIVILEGES ON `rds001`.`test300`  TO 'test02'@'%';
        GRANT SELECT ON `mysql`.`help_topic` TO 'test02'@'%';
        GRANT SELECT ON `mysql`.`func` TO 'test02'@'%';
    5. Otorisasi akun untuk menanyakan tampilan dari database.

      GRANT SELECT ON <Nama database>.<Nama tampilan> to <Nama pengguna akun>;

      Contoh

      • Otorisasi akun untuk mengelola tampilan: Berikan otorisasi akun test01 untuk menanyakan tampilan view_test1 dari database rds001.

        GRANT SELECT ON rds001.view_test1 to test01;
      • Otorisasi akun untuk mengelola beberapa tampilan: Berikan otorisasi akun test01 untuk menanyakan tampilan view_test1 dan view_test2 dari database rds001.

        GRANT SELECT ON rds001.view_test1 to test01;
        GRANT SELECT ON rds001.view_test2 to test01;
    6. Otorisasi akun untuk memperbarui atau menanyakan bidang dalam tabel dari database.

      GRANT UPDATE (<Nama bidang>) ON TABLE <Nama tabel> to <Nama pengguna akun>;     -----Otorisasi akun untuk memperbarui bidang dalam tabel.
      GRANT SELECT (<Nama bidang>) ON TABLE <Nama tabel> to <Nama pengguna akun>;     -----Otorisasi akun untuk menanyakan bidang dalam tabel.

      Contoh

      • Otorisasi akun untuk mengelola bidang: Berikan otorisasi akun test01 untuk memperbarui bidang testid dalam tabel testtable.

        GRANT UPDATE (testid) ON TABLE testtable to test01;
      • Otorisasi akun untuk mengelola beberapa bidang: Berikan otorisasi akun test01 untuk memperbarui bidang test_id dan test_name dalam tabel testtable.

        GRANT UPDATE (test_id) ON TABLE testtable to test01;
        GRANT UPDATE (test_name) ON TABLE testtable to test01;

    Anda juga dapat mengeksekusi pernyataan SQL di Data Management (DMS). Untuk informasi lebih lanjut, lihat Kelola Izin Pengguna pada Database MySQL.

FAQ

Ketika saya mengeksekusi pernyataan SQL pada instance RDS saya, pesan kesalahan "Akses ditolak; Anda memerlukan (setidaknya salah satu) hak istimewa CREATE USER untuk operasi ini TraceId." ditampilkan. Apa yang harus saya lakukan?

  • Penyebab: Pernyataan SQL yang Anda eksekusi mencakup pernyataan CREATE USER. Namun, Anda tidak memiliki izin untuk mengeksekusi pernyataan tersebut.

  • Solusi:

    • Solusi 1: Gunakan akun istimewa untuk masuk ke instance RDS dan mengeksekusi pernyataan SQL.

    • Solusi 2: Eksekusi pernyataan GRANT CREATE USER ON *.* TO 'your_user'@'host';FLUSH PRIVILEGES; untuk memberikan pengguna standar izin untuk mengeksekusi pernyataan CREATE USER.