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.
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. |
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_databasedan kluster komputasitest_cluster.USE test_database@test_cluster;Contoh 3: Tentukan database
test_databasedan kluster komputasitest_clusterdalam 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:
Berikan izin kepada pengguna bernama
jackuntuk mengakses klustertest_cluster.GRANT USAGE_PRIV ON CLUSTER test_cluster TO jack;Kueri izin yang diberikan kepada pengguna bernama
jackuntuk 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:
Berikan izin kepada pengguna bernama
jackuntuk mengakses klusternot_exist_cluster.GRANT USAGE_PRIV ON CLUSTER not_exist_cluster TO jack;Kueri izin yang diberikan kepada pengguna bernama
jackuntuk 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: NULLGunakan 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\GHasil 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: NULLTentukan 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.
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:
Tentukan kluster default untuk pengguna saat ini.
SET PROPERTY 'default_cloud_cluster' = 'test_cluster';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:
Buat pengguna bernama
jackdan tetapkan peran admin kepada pengguna tersebut.CREATE USER jack IDENTIFIED BY '123456' DEFAULT ROLE "admin";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:
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 clusterKueri 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
clustermenunjukkan nama kluster. Kolomis_currentmenunjukkan apakah pengguna saat ini menggunakan kluster. Kolomusersmenunjukkan 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.