Todos os produtos
Search
Central de documentação

ApsaraDB for SelectDB:Gerencie as permissões de cluster

Última atualização: Jun 29, 2026

Uma instância do ApsaraDB for SelectDB pode conter vários clusters de computação. Cada cluster funciona como um pool independente de recursos computacionais, o que permite direcionar diferentes cargas de trabalho para clusters distintos — por exemplo, isolar o tráfego de leitura do tráfego de escrita ou separar cargas online das offline.

Este tópico descreve como listar clusters, alternar entre eles, conceder e revogar acesso de usuários e defina atribuições de cluster padrão.

Importante

Em ambientes de produção, evite renomear clusters, a menos que seja estritamente necessário. Os nomes dos clusters aparecem em consultas e URLs JDBC. Renomear um cluster invalida todas as permissões concedidas anteriormente a ele.

Listar clusters

O comando SHOW CLUSTERS retorna todos os clusters de computação da instância atual.

Sintaxe

SHOW CLUSTERS;

Exemplo de saída

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

Coluna

Descrição

cluster

Nome do cluster

is_current

Indica se o usuário atual está utilizando este cluster

users

Usuários para os quais este cluster pode ser definido como padrão

Alternar para um cluster

Utilize o comando USE para selecione o banco de dados e o cluster de computação da sessão atual.

Sintaxe

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

Parâmetros

Parâmetro

Descrição

catalog_name

Nome do catálogo

database_name

Nome do banco de dados

cluster_name

Nome do cluster

Caso o nome do banco de dados ou do cluster seja uma palavra-chave reservada, coloque-o entre crases. Por exemplo:
USE @`interval`

Exemplos

Para alternar apenas para um cluster específico:

USE @test_cluster;

Para alternar para um banco de dados e um cluster específicos:

USE test_database@test_cluster;

Especifique o banco de dados e o cluster em uma URL de Java Database Connectivity (JDBC):

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

Conceder acesso ao cluster

Conceda o privilégio USAGE_PRIV em um cluster a um usuário para permitir que ele execute consultas nesse cluster.

Sintaxe

GRANT USAGE_PRIV ON CLUSTER {cluster_name} TO {user}

Parâmetros

Parâmetro

Descrição

cluster_name

Nome do cluster

user

Nome de usuário

Exemplo 1: Conceder acesso a um cluster existente

Conceda ao usuário jack acesso ao test_cluster e verifique o resultado:

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

Saída esperada:

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

Exemplo 2: Conceder acesso a um cluster inexistente

O comando GRANT é executado com êxito mesmo que o cluster não exista. O privilégio fica registrado, mas o uso do cluster falhará em tempo de execução.

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

O campo CloudCluster exibe o privilégio:

CloudCluster: not_exist_cluster: Usage_priv  (false)

A tentativa de usar o cluster retorna um erro:

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

Revogar acesso ao cluster

Remova o privilégio USAGE_PRIV de um usuário em um cluster.

Sintaxe

REVOKE USAGE_PRIV ON CLUSTER {cluster_name} FROM {user}

Parâmetros

Parâmetro

Descrição

cluster_name

Nome do cluster

user

Nome de usuário

Exemplo

Revogue o acesso do usuário jack ao test_cluster e verifique:

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

Saída esperada — o campo CloudCluster agora é 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

Defina um cluster padrão

Ao definir um cluster padrão, os usuários deixam de precisar especifique @cluster_name em cada consulta, pois o sistema direciona automaticamente as consultas para esse cluster.

Como o sistema seleciona um cluster padrão (quando nenhum está definido)

Caso nenhum cluster padrão esteja atribuído, o sistema escolhe automaticamente um cluster com backend ativo ao qual o usuário tenha permissão de acesso. Essa seleção permanece estável dentro de uma sessão, mas pode mudar entre sessões nas seguintes situações:

  • O usuário perde a permissão no cluster padrão anterior (a seleção deve mudar).

  • Um cluster é criado ou excluído (a seleção deve mudar).

  • O cluster padrão anterior não possui backend ativo (a seleção pode mudar).

Para evitar comportamentos inesperados, verifique periodicamente se o cluster padrão pretendido ainda está acessível.

Sintaxe

-- 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}';

Parâmetros

Parâmetro

Descrição

clusterName

Nome do cluster

user

Nome de usuário. Definir a propriedade de outro usuário requer permissões de administrador.

Exemplo 1: Defina um cluster padrão para o usuário atual

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

Saída esperada:

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

Exemplo 2: Defina um cluster padrão para outro usuário (requer administrador)

Crie um usuário com a função de administrador e verifique o cluster padrão dele:

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

Saída esperada:

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

Exemplo 3: Defina um cluster inexistente como padrão

Se o cluster especificado não existir, o comando falhará imediatamente:

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

Execute SHOW CLUSTERS para visualizar todos os clusters disponíveis:

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

Perguntas frequentes

Recebo a mensagem "No cloud cluster name selected." ao me conectar. O que devo fazer?

Conceda ao usuário o privilégio USAGE_PRIV em pelo menos um cluster. Consulte Conceder acesso ao cluster.