全部产品
Search
文档中心

ApsaraDB for SelectDB:Mengelola izin kluster

更新时间:Jul 30, 2025

Sebuah ApsaraDB for SelectDB instans dapat berisi beberapa kluster komputasi yang mirip dengan kelompok sumber daya komputasi atau antrian komputasi dalam sistem terdistribusi. Kluster komputasi mendukung beban kerja berbeda, seperti memisahkan lalu lintas baca dari tulis dan lalu lintas online dari offline, untuk memenuhi persyaratan isolasi beban kerja. Topik ini menjelaskan cara mengelola izin untuk mengakses kluster dalam sebuah SelectDB instans.

Penting

Dalam lingkungan produksi, jangan ubah nama kluster kecuali diperlukan karena nama kluster digunakan dalam kueri. Jika Anda mengubah nama kluster, izin untuk mengakses kluster mungkin menjadi tidak valid.

Kueri kluster

Anda dapat menanyakan kluster komputasi dari sebuah SelectDB instans.

Sintaks

SHOW CLUSTERS;

Contoh

SHOW CLUSTERS;

Hasil berikut dikembalikan:

+---------------+------------+-------------+
| cluster       | is_current | users       |
+---------------+------------+-------------+
| test_cluster  | FALSE      | admin, jack |
| test_cluster1 | FALSE      |             |
+---------------+------------+-------------+

Beralih kluster

Anda dapat menentukan database dan kluster komputasi yang ingin digunakan.

Sintaks

USE { [catalog_name.]database_name[@cluster_name] | @cluster_name } 

Parameter

Parameter

Deskripsi

catalog_name

Nama katalog.

database_name

Nama database.

cluster_name

Nama kluster.

Catatan

Jika nama database atau kluster adalah kata kunci yang dicadangkan, gunakan tanda kutip balik ('') untuk mengapit nama tersebut. Contoh kode:

USE @`interval`

Contoh

  • Contoh 1: Gunakan kluster test_cluster.

    USE @test_cluster;
  • Contoh 2: Gunakan database test_database dan kluster komputasi test_cluster.

    USE test_database@test_cluster;
  • Contoh 3: Tentukan database test_database dan kluster komputasi test_cluster dalam URL Java Database Connectivity (JDBC).

    jdbc:mysql://selectdb-cn-****:9030/test_database@test_cluster

Berikan izin kepada pengguna untuk mengakses kluster

Anda dapat memberikan izin kepada pengguna untuk mengakses kluster.

Sintaks

GRANT USAGE_PRIV ON CLUSTER {cluster_name} TO {user} 

Parameter

Parameter

Deskripsi

cluster_name

Nama kluster.

user

Nama pengguna.

Contoh

  • Contoh 1:

    1. Berikan izin kepada pengguna bernama jack untuk mengakses kluster test_cluster.

      GRANT USAGE_PRIV ON CLUSTER test_cluster TO jack;
    2. Kueri izin yang diberikan kepada pengguna bernama jack untuk mengakses kluster.

      SHOW GRANTS FOR jack\G;

      Hasil berikut dikembalikan:

       UserIdentity: 'jack'@'%'
           Password: Yes
        GlobalPrivs: Admin_priv  (false)
       CatalogPrivs: NULL
      DatabasePrivs: internal.information_schema: Select_priv  (false)
         TablePrivs: NULL
      ResourcePrivs: NULL
       CloudCluster: test_cluster: Usage_priv  (false)
         CloudStage: NULL
  • Contoh 2:

    1. Berikan izin kepada pengguna bernama jack untuk mengakses kluster not_exist_cluster.

      GRANT USAGE_PRIV ON CLUSTER not_exist_cluster TO jack;
    2. Kueri izin yang diberikan kepada pengguna bernama jack untuk mengakses kluster.

      SHOW GRANTS FOR jack\G;

      Hasil berikut dikembalikan:

      UserIdentity: 'jack'@'%'
           Password: Yes
        GlobalPrivs: Admin_priv  (false)
       CatalogPrivs: NULL
      DatabasePrivs: internal.information_schema: Select_priv  (false)
         TablePrivs: NULL
      ResourcePrivs: NULL
       CloudCluster: not_exist_cluster: Usage_priv  (false)
         CloudStage: NULL
    3. Gunakan kluster not_exist_cluster.

      USE information_schema@not_exist_cluster;

      Hasil berikut dikembalikan:

      No connection. Trying to reconnect...
      Connection id:    1
      Current database: *** NONE ***
      ERROR 5091 (42000): Cluster not_exist_cluster not exist

Cabut izin untuk mengakses kluster dari pengguna

Anda dapat mencabut izin untuk mengakses kluster dari pengguna.

Sintaks

REVOKE USAGE_PRIV ON CLUSTER {cluster_name} FROM {user} 

Parameter

Parameter

Deskripsi

cluster_name

Nama kluster.

user

Nama pengguna.

Contoh

Cabut izin untuk mengakses kluster test_cluster dari pengguna bernama jack dan kueri izin pengguna tersebut.

REVOKE USAGE_PRIV ON CLUSTER test_cluster FROM jack;
SHOW grants for jack\G

Hasil berikut dikembalikan:

 UserIdentity: 'jack'@'%'
     Password: Yes
  GlobalPrivs: Admin_priv  (false)
 CatalogPrivs: NULL
DatabasePrivs: internal.information_schema: Select_priv  (false)
   TablePrivs: NULL
ResourcePrivs: NULL
 CloudCluster: NULL
   CloudStage: NULL

Tentukan kluster default untuk pengguna

Dalam SelectDB, Anda dapat menentukan kluster default untuk pengguna. Ini memungkinkan pengguna mengakses sumber daya dan melakukan operasi lebih mudah tanpa perlu menentukan kluster secara manual. Sistem akan menggunakan kluster default untuk memproses operasi, mengurangi langkah konfigurasi dan meningkatkan efisiensi kerja.

Catatan

Jika Anda tidak menentukan kluster default untuk pengguna, sistem secara otomatis menentukan kluster dengan backend aktif yang dapat diakses oleh pengguna sebagai kluster default. Dalam sesi yang sama, kluster default tetap tidak berubah. Namun, dalam sesi berbeda, kluster default dapat berubah dalam kasus-kasus berikut:

  • Pengguna tidak memiliki izin untuk mengakses kluster default sebelumnya yang ditentukan oleh sistem.

  • Kluster dibuat atau dihapus.

  • Kluster default sebelumnya tidak memiliki backend aktif.

Dalam kasus pertama dan kedua, kluster default harus diubah. Dalam kasus ketiga, kluster default mungkin berubah. Oleh karena itu, kami merekomendasikan agar Anda secara berkala memeriksa izin untuk memastikan akses sesuai harapan.

Sintaks

-- Tentukan kluster default.
SET PROPERTY 'default_cloud_cluster' = '{clusterName}';
-- Tentukan kluster default untuk pengguna.
SET PROPERTY FOR {user} 'default_cloud_cluster' = '{clusterName}';

Parameter

Parameter

Deskripsi

cluster_name

Nama kluster.

user

Nama pengguna.

Penting

Jika Anda ingin menentukan pengguna, Anda harus memiliki izin pengguna admin.

Contoh

  • Contoh 1:

    1. Tentukan kluster default untuk pengguna saat ini.

      SET PROPERTY 'default_cloud_cluster' = 'test_cluster';
    2. Kueri kluster default yang dapat diakses oleh pengguna.

      SHOW PROPERTY;

      Hasil berikut dikembalikan:

      +------------------------+-------------------------------+
      | Key                    | Value                         |
      +------------------------+-------------------------------+
      | cpu_resource_limit     | -1                            |
      | default_cloud_cluster  | test_cluster                  |
      | exec_mem_limit         | -1                            |
      | load_mem_limit         | -1                            |
      | max_query_instances    | -1                            |
      | max_user_connections   | 100                           |
      | quota.high             | 800                           |
      | quota.low              | 100                           |
      | quota.normal           | 400                           |
      | resource.cpu_share     | 1000                          |
      | resource.hdd_read_iops | 80                            |
      | resource.hdd_read_mbps | 30                            |
      | resource.io_share      | 1000                          |
      | resource.ssd_read_iops | 1000                          |
      | resource.ssd_read_mbps | 30                            |
      | resource_tags          |                               |
      | sql_block_rules        |                               |
      +------------------------+-------------------------------+
  • Contoh 2:

    1. Buat pengguna bernama jack dan tetapkan peran admin kepada pengguna tersebut.

      CREATE USER jack IDENTIFIED BY '123456' DEFAULT ROLE "admin";
    2. Kueri kluster default yang dapat diakses oleh pengguna bernama jack.

      SHOW PROPERTY FOR jack;

      Hasil berikut dikembalikan:

      +------------------------+-------------------------------+
      | Key                    | Value                         |
      +------------------------+-------------------------------+
      | cpu_resource_limit     | -1                            |
      | default_cloud_cluster  | test_cluster1                 |
      | exec_mem_limit         | -1                            |
      | load_mem_limit         | -1                            |
      | max_query_instances    | -1                            |
      | max_user_connections   | 100                           |
      | quota.high             | 800                           |
      | quota.low              | 100                           |
      | quota.normal           | 400                           |
      | resource.cpu_share     | 1000                          |
      | resource.hdd_read_iops | 80                            |
      | resource.hdd_read_mbps | 30                            |
      | resource.io_share      | 1000                          |
      | resource.ssd_read_iops | 1000                          |
      | resource.ssd_read_mbps | 30                            |
      | resource_tags          |                               |
      | sql_block_rules        |                               |
      +------------------------+-------------------------------+
  • Contoh 3:

    1. Jika kluster default yang ingin ditentukan tidak ada dalam instans saat ini, kesalahan dilaporkan dan meminta Anda mengeksekusi pernyataan SHOW CLUSTERS; untuk menanyakan semua kluster yang tersedia.

      SET PROPERTY 'default_cloud_cluster' = 'not_exist_cluster';

      Hasil berikut dikembalikan:

      ERROR 5091 (42000): errCode = 2, detailMessage = Cluster not_exist_cluster not exist, use SQL 'SHOW CLUSTERS' to get a valid cluster
    2. Kueri semua kluster yang tersedia dalam instans saat ini.

      SHOW CLUSTERS;

      Hasil berikut dikembalikan:

      +---------------+------------+-------------+
      | cluster       | is_current | users       |
      +---------------+------------+-------------+
      | test_cluster  | FALSE      | admin, jack |
      | test_cluster1 | FALSE      |             |
      +---------------+------------+-------------+

      Kolom cluster menunjukkan nama kluster. Kolom is_current menunjukkan apakah pengguna saat ini menggunakan kluster. Kolom users menunjukkan bahwa kluster pada baris saat ini dapat ditentukan sebagai kluster default untuk pengguna.

    FAQ

    Apa yang harus saya lakukan jika pesan kesalahan yang berisi No cloud cluster name selected. muncul ketika pengguna mengakses kluster?

    Berikan izin kepada pengguna untuk mengakses kluster. Untuk informasi lebih lanjut, lihat Berikan izin kepada pengguna untuk mengakses kluster.