Tous les produits
Search
Centre de documentation

ApsaraDB for SelectDB:Gérer les permissions de cluster

Dernière mise à jour :Aug 11, 2026

Une instance ApsaraDB for SelectDB peut contenir plusieurs clusters de calcul. Chaque cluster constitue un pool de ressources de calcul indépendant permettant de diriger différentes charges de travail vers des clusters distincts, par exemple pour isoler le trafic de lecture du trafic d'écriture ou séparer les traitements en ligne des traitements hors ligne.

Cette rubrique explique comment lister les clusters, basculer de l'un à l'autre, accorder ou révoquer l'accès utilisateur et définir un cluster par défaut.

Important

En production, évitez de renommer les clusters sauf nécessité absolue. Les noms de cluster apparaissent dans les requêtes et les URL JDBC. Le changement de nom d'un cluster invalide toutes les permissions précédemment accordées.

Lister les clusters

La commande SHOW CLUSTERS retourne tous les clusters de calcul de l'instance actuelle.

Syntaxe

SHOW CLUSTERS;

Exemple de sortie

+---------------+------------+-------------+
| cluster       | is_current | users       |
+---------------+------------+-------------+
| test_cluster  | FALSE      | admin, jack |
| test_cluster1 | FALSE      |             |
+---------------+------------+-------------+
Colonne Description
cluster Nom du cluster
is_current Indique si l'utilisateur actuel utilise ce cluster
users Utilisateurs pouvant définir ce cluster comme valeur par défaut

Basculer vers un cluster

Utilisez USE pour sélectionner la base de données et le cluster de calcul de la session en cours.

Syntaxe

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

Paramètres

Paramètre Description
catalog_name Nom du catalogue
database_name Nom de la base de données
cluster_name Nom du cluster
Si le nom d'une base de données ou d'un cluster est un mot-clé réservé, placez-le entre accents graves. Exemple :
USE @`interval`

Exemples

Basculer uniquement vers un cluster spécifique :

USE @test_cluster;

Basculer vers une base de données et un cluster spécifiques :

USE test_database@test_cluster;

Spécifier la base de données et le cluster dans une URL Java Database Connectivity (JDBC) :

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

Accorder l'accès à un cluster

Accordez le privilège USAGE_PRIV sur un cluster à un utilisateur pour lui permettre d'y exécuter des requêtes.

Syntaxe

GRANT USAGE_PRIV ON CLUSTER {cluster_name} TO {user}

Paramètres

Paramètre Description
cluster_name Nom du cluster
user Nom d'utilisateur

Exemple 1 : Accorder l'accès à un cluster existant

Accordez à jack l'accès à test_cluster et vérifiez le résultat :

GRANT USAGE_PRIV ON CLUSTER test_cluster TO jack;
SHOW GRANTS FOR jack\G;

Sortie attendue :

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

Exemple 2 : Accorder l'accès à un cluster inexistant

La commande GRANT réussit même si le cluster n'existe pas. Le privilège est enregistré, mais toute tentative d'utilisation du cluster échoue lors de l'exécution.

GRANT USAGE_PRIV ON CLUSTER not_exist_cluster TO jack;
SHOW GRANTS FOR jack\G;

Le champ CloudCluster affiche le privilège :

CloudCluster: not_exist_cluster: Usage_priv  (false)

Toute tentative d'utilisation du cluster retourne une erreur :

USE information_schema@not_exist_cluster;
ERROR 5091 (42000): Cluster not_exist_cluster not exist

Révoquer l'accès à un cluster

Supprimez le privilège USAGE_PRIV d'un utilisateur sur un cluster.

Syntaxe

REVOKE USAGE_PRIV ON CLUSTER {cluster_name} FROM {user}

Paramètres

Paramètre Description
cluster_name Nom du cluster
user Nom d'utilisateur

Exemple

Révoquez l'accès de jack à test_cluster et vérifiez le résultat :

REVOKE USAGE_PRIV ON CLUSTER test_cluster FROM jack;
SHOW GRANTS FOR jack\G;

Sortie attendue — CloudCluster est désormais NULL :

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

Définir un cluster par défaut

Définir un cluster par défaut dispense les utilisateurs de spécifier @cluster_name dans chaque requête ; le système dirige alors automatiquement leurs requêtes vers ce cluster.

Sélection automatique du cluster par défaut

En l'absence de cluster par défaut explicite, le système sélectionne automatiquement un cluster disposant d'un backend actif auquel l'utilisateur a accès. Cette sélection reste stable au sein d'une même session, mais peut changer entre deux sessions dans les cas suivants :

  • L'utilisateur perd l'accès au cluster par défaut précédent (la sélection change obligatoirement).

  • Un cluster est créé ou supprimé (la sélection change obligatoirement).

  • Le cluster par défaut précédent ne dispose plus d'aucun backend actif (la sélection peut changer).

Pour éviter tout comportement inattendu, vérifiez régulièrement que le cluster par défaut souhaité reste accessible.

Syntaxe

-- Set a default cluster for the current user
SET PROPERTY 'default_cloud_cluster' = '{clusterName}';

-- Set a default cluster for another user (requires admin)
SET PROPERTY FOR {user} 'default_cloud_cluster' = '{clusterName}';

Paramètres

Paramètre Description
clusterName Nom du cluster
user Nom d'utilisateur. La modification des propriétés d'un autre utilisateur nécessite des permissions d'administrateur.

Exemple 1 : Définir un cluster par défaut pour l'utilisateur actuel

SET PROPERTY 'default_cloud_cluster' = 'test_cluster';
SHOW PROPERTY;

Sortie attendue :

+------------------------+-------------------------------+
| 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        |                               |
+------------------------+-------------------------------+

Exemple 2 : Définir un cluster par défaut pour un autre utilisateur (droits administrateur requis)

Créez un utilisateur avec le rôle administrateur, puis vérifiez son cluster par défaut :

CREATE USER jack IDENTIFIED BY '123456' DEFAULT ROLE "admin";
SHOW PROPERTY FOR jack;

Sortie attendue :

+------------------------+-------------------------------+
| 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        |                               |
+------------------------+-------------------------------+

Exemple 3 : Définir un cluster inexistant comme valeur par défaut

Si le cluster spécifié n'existe pas, la commande échoue immédiatement :

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

Exécutez SHOW CLUSTERS pour afficher tous les clusters disponibles :

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

FAQ

Le message « No cloud cluster name selected. » s'affiche lors de la connexion. Que faire ?

Accordez à l'utilisateur le privilège USAGE_PRIV sur au moins un cluster. Consultez la section Accorder l'accès à un cluster.