Todos os produtos
Search
Central de documentação

ApsaraDB for SelectDB:Gerenciar as permissões básicas

Última atualização: Jun 29, 2026

O ApsaraDB for SelectDB utiliza um modelo de permissão compatível com MySQL para aplicar controle de acesso granular no nível de tabela. É possível conceder permissões diretamente aos usuários ou por meio de funções, além de restringir o acesso por endereço IP ou domínio usando listas de permissões.

Conceitos principais

Conceito

Parâmetro

Descrição

Identidade do usuário

user_identity

Identifica um usuário pela combinação de nome de usuário e endereço do host. Formatos suportados: username@'userhost' (um endereço IP específico) e username@['domain'] (um nome de domínio que o DNS resolve para um ou mais endereços IP).

Permissão

privilege

Direito de executar uma operação específica em um nó, catálogo, banco de dados ou tabela.

Função

role

Grupo nomeado de permissões. Atribua uma função a um usuário para conceder todas as permissões desse grupo de uma só vez. Alterar as permissões de uma função afeta imediatamente todos os usuários atribuídos a ela. Funções personalizadas são suportadas.

Propriedade do usuário

user_property

Conjunto de atributos vinculados a um nome de usuário, e não a uma identidade de usuário. Por exemplo, cmy@'192.%' e cmy@['domain'] compartilham as mesmas propriedades de usuário porque ambas pertencem ao usuário cmy. As propriedades do usuário incluem limites de conexão e configurações padrão de cluster de importação.

As propriedades do usuário pertencem ao nome de usuário , e não a uma identidade de usuário específica. Múltiplas identidades que compartilham o mesmo nome de usuário também compartilham um único conjunto de propriedades de usuário.

Funções integradas

Durante a inicialização de uma instância do SelectDB, duas funções e seus respectivos usuários são criados automaticamente.

Função

Usuário padrão

Permissões

Cenário de uso

operator

root@'%'

NODE_PRIV + ADMIN_PRIV; permite login a partir de qualquer nó

Controle total do cluster, incluindo gerenciamento de nós

admin

admin@'%'

ADMIN_PRIV; todas as permissões, exceto alterações de nós

Administração diária sem acesso ao nível de nó

Não é possível revogar ou modificar as permissões de funções ou usuários criados automaticamente.

Caso esqueça a senha do usuário admin e não consiga fazer login na instância, redefina-a pelo console do SelectDB. Para mais informações, consulte Redefinir a senha de um usuário admin para uma instância.

Tipos de permissão

Importante

Após criar um usuário, utilize uma conta privilegiada para conceder a ele permissões de acesso a clusters, bancos de dados e tabelas. Para obter informações sobre como conceder permissões de acesso ao cluster, consulte Conceder a um usuário as permissões para acessar clusters.

A tabela a seguir descreve os tipos de permissão disponíveis e os níveis em que cada um pode ser aplicado.

Permissão

Níveis aplicáveis

Descrição

GRANT_PRIV

Global, Catálogo, Banco de dados, Tabela

Concede ou revoga permissões de usuários e funções. Também permite criar, excluir e modificar usuários e funções.

SELECT_PRIV

Global, Catálogo, Banco de dados, Tabela

Acesso somente leitura a bancos de dados e tabelas.

LOAD_PRIV

Global, Catálogo, Banco de dados, Tabela

Acesso de escrita a bancos de dados e tabelas, incluindo operações LOAD, INSERT e DELETE.

ALTER_PRIV

Global, Catálogo, Banco de dados, Tabela

Modifica bancos de dados e tabelas: renomeia, cria ou remove colunas e gerencia partições.

CREATE_PRIV

Global, Catálogo, Banco de dados, Tabela

Cria bancos de dados, tabelas e visualizações.

DROP_PRIV

Global, Catálogo, Banco de dados, Tabela

Remove bancos de dados, tabelas e visualizações.

USAGE_PRIV

Recurso

Utiliza recursos.

Níveis de permissão

As permissões se aplicam a objetos de dados em quatro níveis de escopo.

Nível

Notação

Escopo

Global

*.*.*

Todas as tabelas em todos os bancos de dados de todos os catálogos

Catálogo

ctl.*.*

Todos os bancos de dados e tabelas no catálogo especificado

Banco de dados

ctl.db.*

Todas as tabelas no banco de dados especificado

Tabela

ctl.db.tbl

A tabela especificada no banco de dados especificado

As permissões de recurso usam um escopo separado (RESOURCE resource_name) e não correspondem aos níveis de dados.

Referência de sintaxe SQL

Gerenciamento de usuários e funções

Operação

Palavra-chave

Sintaxe

Criar um usuário

CREATE USER

CREATE USER [IF EXISTS] user_identity [IDENTIFIED BY 'password'] [DEFAULT ROLE 'role_name'] [password_policy]

Excluir um usuário

DROP USER

DROP USER 'user_identity'

Conceder permissões

GRANT

GRANT privilege_list ON priv_level TO user_identity [ROLE role_name]

GRANT privilege_list ON RESOURCE resource_name TO user_identity [ROLE role_name]

Revogar permissões

REVOKE

REVOKE privilege_list ON db_name[.tbl_name] FROM user_identity [ROLE role_name]

REVOKE privilege_list ON RESOURCE resource_name FROM user_identity [ROLE role_name]

Criar uma função

CREATE ROLE

CREATE ROLE rol_name;

Excluir uma função

DROP ROLE

DROP ROLE rol_name;

Consultar permissões de um usuário

SHOW GRANTS

SHOW [ALL] GRANTS [FOR user_identity];

Consultar todas as funções

SHOW ROLES

SHOW ROLES

Consultar propriedades do usuário

SHOW PROPERTY

SHOW PROPERTY [FOR user] [LIKE key]

Definir propriedades do usuário

SET PROPERTY

SET PROPERTY [FOR 'user'] 'key' = 'value' [, 'key' = 'value']

Opções de política de senha

Utilize a cláusula [password_policy] em CREATE USER para configurar restrições de autenticação.

Política

Valores válidos

Padrão

Descrição

PASSWORD_HISTORY

n

DEFAULT

0 (desativado)

Número de senhas anteriores que não podem ser reutilizadas. 0 significa que qualquer senha histórica é permitida.

PASSWORD_EXPIRE

DEFAULT

NEVER

INTERVAL n DAY/HOUR/SECOND

NEVER

Tempo durante o qual a senha permanece válida antes de expirar.

FAILED_LOGIN_ATTEMPTS

n

DEFAULT

Sem limite

Máximo de tentativas consecutivas de login com falha antes que a conta seja bloqueada.

PASSWORD_LOCK_TIME

n DAY/HOUR/SECOND

UNBOUNDED

Duração do bloqueio da conta após atingir o limite de tentativas com falha.

Permissões ADMIN_PRIV e GRANT_PRIV

Tanto ADMIN_PRIV quanto GRANT_PRIV permitem conceder permissões a outros usuários, mas seus escopos diferem.

  • ADMIN_PRIV: Só pode ser concedida ou revogada no nível global. A permissão GRANT_PRIV no nível global equivale à ADMIN_PRIV — use ambas com cautela.

  • GRANT_PRIV: Pode ter escopo global, de catálogo, de banco de dados ou de tabela. Um usuário com GRANT_PRIV em um determinado nível só pode conceder permissões dentro desse escopo.

A tabela abaixo mostra qual permissão é necessária para cada operação administrativa.

Operação

Permissão necessária

CREATE USER

ADMIN_PRIV ou GRANT_PRIV no nível global ou de banco de dados

DROP USER

ADMIN_PRIV ou GRANT_PRIV no nível global

CREATE/DROP ROLE

ADMIN_PRIV ou GRANT_PRIV no nível global

GRANT/REVOKE (escopo global)

ADMIN_PRIV ou GRANT_PRIV no nível global

GRANT/REVOKE (escopo de catálogo)

GRANT_PRIV no nível de catálogo

GRANT/REVOKE (escopo de banco de dados)

GRANT_PRIV no nível de banco de dados

GRANT/REVOKE (escopo de tabela)

GRANT_PRIV no nível de tabela

SET PASSWORD (qualquer usuário)

ADMIN_PRIV ou GRANT_PRIV no nível global

SET PASSWORD (própria identidade)

Nenhuma permissão especial necessária

Usuários com GRANT_PRIV em um nível não global não podem alterar a senha de um usuário existente. Eles só podem definir uma senha ao criar um novo usuário.

Para consultar sua identidade de usuário autenticada atual, execute:

SELECT current_user();

Para consultar sua identidade de login real, execute:

SELECT user();

Todas as permissões são aplicadas com base no current_user, que é a identidade que passou pela autenticação.

Por exemplo, se você criar um usuário cuja identidade seja user1@'192.%' e user1 fizer login a partir do bloco CIDR 192.168.0.0/16, então current_user será user1@'192.%' e user será user1@'192.168.%'. Todas as permissões se aplicam à identidade current_user.

Propriedades do usuário

As propriedades do usuário controlam limites de recursos e comportamentos para um determinado nome de usuário. Defina-as com SET PROPERTY e consulte-as com SHOW PROPERTY.

Propriedade

Descrição

cpu_resource_limit

Limite máximo de recursos de CPU para consultas. -1 significa ilimitado. Consulte também: a variável de sessão cpu_resource_limit.

default_load_cluster

Cluster padrão para importação de dados.

exec_mem_limit

Memória máxima para consultas. -1 significa ilimitado. Consulte também: a variável de sessão exec_mem_limit.

insert_timeout

Tempo limite para operações INSERT.

max_query_instances

Número máximo de instâncias de consulta que o usuário pode executar simultaneamente.

max_user_connections

Número máximo de conexões simultâneas.

query_timeout

Tempo limite para consultas.

resource_tags

Tags de recurso.

sql_block_rules

Regras de bloqueio de SQL. Consultas que correspondem a essas regras são rejeitadas.

Quando a mesma configuração existe em vários níveis, o sistema a resolve nesta ordem:

session variable > user property > global variable > default value

Exemplos

Conceder acesso somente leitura a uma única tabela

Crie um usuário e conceda acesso somente leitura a test_db.test_table.

-- Create the user, allowing login from the 172.10.0.0/16 CIDR block
CREATE USER test_user@'172.10.%' IDENTIFIED BY '123456';

-- Grant read, modify, and import permissions on the table
GRANT SELECT_PRIV, ALTER_PRIV, LOAD_PRIV ON test_db.test_table TO 'test_user'@'172.10.%';

Revogar permissões de um usuário

REVOKE SELECT_PRIV ON test_db.* FROM 'test_user'@'172.10.%';

Delegar permissões por meio de uma função

Crie uma função, conceda permissões a ela e, em seguida, atribua-a a um usuário.

-- Create the role
CREATE ROLE test_role;

-- Grant import permissions on all tables in test_db to the role
GRANT LOAD_PRIV ON test_db.* TO ROLE 'test_role';

-- Assign the role to a user
GRANT "test_role" TO test_user@'172.10.%';

Consultar e atualizar propriedades do usuário

-- Query all properties of a user
SHOW PROPERTY FOR 'test_user';

-- Filter by property name
SHOW PROPERTY FOR 'test_user' LIKE '%max_user_connections%';

-- Set a property
SET PROPERTY FOR 'test_user' 'max_user_connections' = '1000';

Excluir um usuário ou função

DROP USER 'test_user'@'172.10.%';
DROP ROLE test_role;

Consultar permissões de um usuário

SHOW GRANTS FOR test_user@'%';

Melhores práticas

Mapear tipos de usuário para permissões

Um padrão comum para clusters multilocatários:

Tipo de usuário

Permissões recomendadas

Observações

Administrador do cluster

ADMIN_PRIV ou GRANT_PRIV (global)

Controle total, incluindo gerenciamento de nós via função operator

Engenheiro de P&D

CREATE_PRIV, DROP_PRIV, ALTER_PRIV, LOAD_PRIV, SELECT_PRIV no nível de banco de dados

Gerencia esquema e dados dos bancos de dados atribuídos

Usuário regular

SELECT_PRIV no nível de banco de dados ou tabela

Acesso somente leitura aos dados atribuídos

Use funções para simplificar o gerenciamento de permissões quando vários usuários compartilharem o mesmo conjunto de permissões.

Delegar direitos de concessão sem acesso administrativo total

Se cada banco de dados pertencer a uma equipe diferente, crie um usuário por banco de dados com GRANT_PRIV restrita a esse banco de dados. Esse usuário poderá conceder permissões em seu banco de dados a outras pessoas, sem conseguir afetar outros bancos de dados.

Simular uma lista de bloqueios usando correspondência por prioridade

O SelectDB suporta apenas listas de permissões. Para bloquear o acesso de um intervalo de IP específico dentro de um intervalo mais amplo, crie uma identidade de usuário mais específica com uma senha diferente.

Por exemplo, test_user1@'192.%' permite login a partir de 192.*. Para bloquear o intervalo 192.168.0.0/16, crie test_user2@'192.168.%' com uma senha diferente. Como 192.168.% é mais específico, ele tem prioridade — os usuários desse intervalo devem usar a nova senha e não podem usar a original.

Observações de uso

  • A permissão ADMIN_PRIV só pode ser concedida e revogada no nível global.

  • A permissão GRANT_PRIV no nível global equivale à ADMIN_PRIV, pois permite conceder todas as permissões. Aplique-a com cautela.

  • Todas as permissões são aplicadas com base no current_user (a identidade autenticada), e não na identidade de login real (user).

Perguntas frequentes

O que fazer se houver conflito entre um nome de domínio e um endereço IP ao criar um usuário?

Exclua o usuário conflitante com DROP USER e recrie-o com a identidade correta.

Para um conflito entre domínio e IP, crie primeiro o usuário com a identidade de domínio e depois conceda as permissões no nível de domínio:

CREATE USER test_user@['domain'];
GRANT SELECT_PRIV ON *.* TO test_user@['domain'];

Se o DNS resolver o domínio para IP1 e IP2, e você posteriormente conceder uma permissão diferente a test_user@'IP1', essa identidade receberá seu próprio conjunto de permissões — alterar test_user@['domain'] não afetará test_user@'IP1'.

O que fazer se houver conflito entre duas identidades de usuário com intervalos de IP sobrepostos?

Crie a identidade mais específica. O padrão de host mais específico tem prioridade.

CREATE USER test_user@'%' IDENTIFIED BY "12345";
CREATE USER test_user@'192.%' IDENTIFIED BY "abcde";

Uma tentativa de login a partir do intervalo 192.168.0.0/16 corresponde a 192.% (maior prioridade). O uso da senha 12345 nesse intervalo será rejeitado; use abcde em vez disso.

Próximos passos