すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for SelectDB:クラスタ権限の管理

最終更新日:Apr 01, 2025

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:

    1. jack という名前のユーザーに test_cluster クラスタへのアクセス権限を付与します。

      GRANT USAGE_PRIV ON CLUSTER test_cluster TO jack;
    2. 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:

    1. jack という名前のユーザーに not_exist_cluster クラスタへのアクセス権限を付与します。

      GRANT USAGE_PRIV ON CLUSTER not_exist_cluster TO jack;
    2. 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: NULL
    3. not_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:

    1. 現在のユーザーのデフォルト クラスタを指定します。

      SET PROPERTY 'default_cloud_cluster' = 'test_cluster';
    2. ユーザーがアクセスできるデフォルト クラスタをクエリします。

      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:

    1. jack という名前のユーザーを作成し、管理者ロールをユーザーに割り当てます。

      CREATE USER jack IDENTIFIED BY '123456' DEFAULT ROLE "admin";
    2. 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:

    1. 指定するデフォルト クラスタが現在のインスタンスに存在しない場合、エラーが報告され、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
    2. 現在のインスタンスで使用可能なすべてのクラスタをクエリします。

      SHOW CLUSTERS;

      次の結果が返されます。

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

      この クラスター 列は、クラスターの名前を示します。 最新 列は、現在のユーザーがクラスターを使用しているかどうかを示します。 ユーザー 列は、現在の行のクラスターをユーザーのデフォルト クラスターとして指定できることを示します。

    FAQ

    ユーザーがクラスタにアクセスするときに No cloud cluster name selected. が含まれるエラー メッセージが表示された場合はどうすればよいですか?

    ユーザーにクラスタへのアクセス権限を付与します。詳細については、「ユーザーにクラスタへのアクセス権限を付与する」をご参照ください。