ApsaraDB for SelectDB インスタンスには、分散システムの計算リソースグループまたは計算キューに類似した複数の計算クラスタを含めることができます。計算クラスタは、読み取りトラフィックと書き込みトラフィックの分離、オンライン トラフィックとオフライン トラフィックの分離など、ワークロード分離の要件を満たすために、さまざまなワークロードをサポートできます。 このトピックでは、 インスタンスのクラスタへのアクセス権限を管理する方法について説明します。SelectDB インスタンス。
本番環境では、必要な場合を除き、クラスタの名前を変更しないでください。これは、クラスタ名がクエリで使用されるためです。クラスタ名を変更すると、クラスタへのアクセス権限が無効になる可能性があります。
クラスタのクエリ
計算クラスターをクエリできます。SelectDB インスタンス。
構文
SHOW CLUSTERS;例
SHOW CLUSTERS;次の結果が返されます。
+---------------+------------+-------------+
| cluster | is_current | users |
+---------------+------------+-------------+
| test_cluster | FALSE | admin, jack |
| test_cluster1 | FALSE | |
+---------------+------------+-------------+クラスタの切り替え
使用するデータベースと計算クラスタを指定できます。
構文
USE { [catalog_name.]database_name[@cluster_name] | @cluster_name } パラメータ
パラメータ | 説明 |
catalog_name | カタログの名前。 |
database_name | データベースの名前。 |
cluster_name | クラスタの名前。 |
データベース名またはクラスター名が予約キーワードである場合は、データベース名またはクラスター名をバックティック (') で囲む必要があります。サンプル コード:
USE @`interval`例
例 1:
test_clusterクラスタを使用します。USE @test_cluster;例 2:
test_databaseデータベースとtest_cluster計算クラスタを使用します。USE test_database@test_cluster;例 3:Java Database Connectivity ( JDBC ) URL で
test_databaseデータベースとtest_cluster計算クラスタを指定します。jdbc:mysql://selectdb-cn-****:9030/test_database@test_cluster
ユーザーにクラスタへのアクセス権限を付与する
ユーザーにクラスタへのアクセス権限を付与できます。
構文
GRANT USAGE_PRIV ON CLUSTER {cluster_name} TO {user} パラメータ
パラメータ | 説明 |
cluster_name | クラスタの名前。 |
user | ユーザー名。 |
例
例 1:
jackという名前のユーザーにtest_clusterクラスタへのアクセス権限を付与します。GRANT USAGE_PRIV ON CLUSTER test_cluster TO jack;jackという名前のユーザーに付与されたクラスタへのアクセス権限をクエリします。SHOW GRANTS FOR jack\G;次の結果が返されます。
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
例 2:
jackという名前のユーザーにnot_exist_clusterクラスタへのアクセス権限を付与します。GRANT USAGE_PRIV ON CLUSTER not_exist_cluster TO jack;jackという名前のユーザーに付与されたクラスタへのアクセス権限をクエリします。SHOW GRANTS FOR jack\G;次の結果が返されます。
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: NULLnot_exist_clusterクラスタを使用します。USE information_schema@not_exist_cluster;次の結果が返されます。
No connection. Trying to reconnect... Connection id: 1 Current database: *** NONE *** ERROR 5091 (42000): Cluster not_exist_cluster not exist
ユーザーからクラスタへのアクセス権限を取り消す
ユーザーからクラスタへのアクセス権限を取り消すことができます。
構文
REVOKE USAGE_PRIV ON CLUSTER {cluster_name} FROM {user} パラメータ
パラメータ | 説明 |
cluster_name | クラスタの名前。 |
user | ユーザー名。 |
例
jack という名前のユーザーから test_cluster クラスタへのアクセス権限を取り消し、ユーザーの権限をクエリします。
REVOKE USAGE_PRIV ON CLUSTER test_cluster FROM jack;
SHOW grants for jack\G次の結果が返されます。
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ユーザーのデフォルト クラスタを指定する
SelectDB では、ユーザーのデフォルト クラスタを指定できます。これにより、ユーザーは SelectDB のリソースにアクセスして操作をより簡単かつ便利に実行できます。ユーザーのデフォルト クラスタを指定すると、ユーザーはクラスタを指定せずにクエリなどの操作を実行できます。システムは自動的にデフォルト クラスタを使用して操作を処理します。これにより、各操作に必要な構成手順が削減され、作業効率が向上します。さらに、これにより、ユーザーはクラスタ管理から解放され、データ分析とタスクに集中できます。
ユーザーのデフォルト クラスタを指定しない場合、システムは自動的にアクティブなバックエンドを持ち、ユーザーがアクセス権限を持つクラスタをユーザーのデフォルト クラスタとして指定します。同じセッションでは、システムによって指定されたデフォルト クラスタは変更されません。異なるセッションでは、システムによって指定されたデフォルト クラスタは、次の場合に変更される可能性があります。
ユーザーは、システムによって指定された以前のデフォルト クラスタへのアクセス権限を持っていません。
クラスタが作成されるか、既存のクラスタが削除されます。
システムによって指定された以前のデフォルト クラスタにアクティブなバックエンドがありません。
最初と2番目のケースでは、システムによって指定されたデフォルト クラスタを変更する必要があります。3番目のケースでは、システムによって指定されたデフォルト クラスタが変更される可能性があります。したがって、クラスタへのアクセス権限を定期的に確認することをお勧めします。これにより、必要なリソースに期待どおりにアクセスできるようになります。
構文
-- デフォルト クラスタを指定します。
SET PROPERTY 'default_cloud_cluster' = '{clusterName}';
-- ユーザーのデフォルト クラスタを指定します。
SET PROPERTY FOR {user} 'default_cloud_cluster' = '{clusterName}';パラメータ
パラメータ | 説明 |
cluster_name | クラスタの名前。 |
user | ユーザー名。 重要 ユーザーを指定する場合、管理者ユーザーの権限を持っている必要があります。 |
例
例 1:
現在のユーザーのデフォルト クラスタを指定します。
SET PROPERTY 'default_cloud_cluster' = 'test_cluster';ユーザーがアクセスできるデフォルト クラスタをクエリします。
SHOW PROPERTY;次の結果が返されます。
+------------------------+-------------------------------+ | 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 | | +------------------------+-------------------------------+
例 2:
jackという名前のユーザーを作成し、管理者ロールをユーザーに割り当てます。CREATE USER jack IDENTIFIED BY '123456' DEFAULT ROLE "admin";jackという名前のユーザーがアクセスできるデフォルト クラスタをクエリします。SHOW PROPERTY FOR jack;次の結果が返されます。
+------------------------+-------------------------------+ | 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 | | +------------------------+-------------------------------+
例 3:
指定するデフォルト クラスタが現在のインスタンスに存在しない場合、エラーが報告され、
SHOW CLUSTERS;文を実行して、現在のインスタンスで使用可能なすべてのクラスタをクエリするように求められます。SET PROPERTY 'default_cloud_cluster' = 'not_exist_cluster';次の結果が返されます。
ERROR 5091 (42000): errCode = 2, detailMessage = Cluster not_exist_cluster not exist, use SQL 'SHOW CLUSTERS' to get a valid cluster現在のインスタンスで使用可能なすべてのクラスタをクエリします。
SHOW CLUSTERS;次の結果が返されます。
+---------------+------------+-------------+ | cluster | is_current | users | +---------------+------------+-------------+ | test_cluster | FALSE | admin, jack | | test_cluster1 | FALSE | | +---------------+------------+-------------+この
クラスター列は、クラスターの名前を示します。最新列は、現在のユーザーがクラスターを使用しているかどうかを示します。ユーザー列は、現在の行のクラスターをユーザーのデフォルト クラスターとして指定できることを示します。
FAQ
ユーザーがクラスタにアクセスするときに
No cloud cluster name selected.が含まれるエラー メッセージが表示された場合はどうすればよいですか?ユーザーにクラスタへのアクセス権限を付与します。詳細については、「ユーザーにクラスタへのアクセス権限を付与する」をご参照ください。