Todos os produtos
Search
Central de documentação

PolarDB:Sistema de contas e permissões

Última atualização: Aug 27, 2026

O sistema de contas e permissões do PolarDB-X é compatível com MySQL e aceita instruções como GRANT, REVOKE, SHOW GRANTS, CREATE USER, DROP USER e SET PASSWORD.

Contas

Account Permissions

Uma conta é identificada pela combinação de nome de usuário e nome de host no formato username@'host'. Contas com o mesmo nome de usuário, mas hosts diferentes, são distintas. Por exemplo, lily@30.9.73.96 e lily@30.9.73.100 são duas contas separadas e podem ter senhas e permissões diferentes.

Após a criação de um banco de dados no console do PolarDB-X, o sistema cria automaticamente duas contas de sistema para esse banco: uma conta de administrador e uma conta somente leitura. Não é possível excluir essas contas integradas nem modificar suas permissões.

  • O nome da conta de administrador é igual ao nome do banco de dados. Por exemplo, se o banco de dados se chama easydb, a conta de administrador também se chama easydb.

  • O nome da conta somente leitura corresponde ao nome do banco de dados seguido pelo sufixo _RO. Por exemplo, se o banco de dados se chama easydb, a conta somente leitura se chama easydb_RO.

Por exemplo, se houver dois bancos de dados, dreamdb e andordb, o banco de dados dreamdb terá uma conta de administrador chamada dreamdb e uma conta somente leitura chamada dreamdb_RO. O banco de dados andordb terá uma conta de administrador chamada andordb e uma conta somente leitura chamada andordb_RO.

Nota

As contas criadas com a instrução

CREATE USER

no

PolarDB-X

existem apenas dentro do

PolarDB-X

. Elas não têm relação com o ApsaraDB RDS e não são sincronizadas com as instâncias de backend do ApsaraDB RDS.

Regras de conta

  • A conta de administrador possui todas as permissões.

  • Somente uma conta de administrador pode criar outras contas e conceder permissões.

  • A conta de administrador está vinculada a um banco de dados específico e não tem permissões sobre outros bancos. Durante a conexão, a conta acessa apenas o banco de dados associado e não pode conceder permissões para outros bancos. Por exemplo, a conta de administrador easydb conecta-se apenas ao banco de dados easydb e só pode conceder permissões nesse banco ou em suas tabelas para outra conta.

  • A conta somente leitura possui apenas a permissão SELECT.

Convenções de nomenclatura

  • Os nomes de usuário diferenciam maiúsculas de minúsculas.

  • Devem conter de 4 a 20 caracteres.

  • Precisam começar com uma letra.

  • Podem incluir letras maiúsculas, minúsculas e dígitos.

Regras de senha

  • Devem conter de 6 a 20 caracteres.

  • Podem incluir letras maiúsculas, minúsculas, dígitos e os seguintes caracteres especiais: @#$%^&+=.

Regras de correspondência de host

  • O host deve ser um endereço IP. É possível usar os curingas _ e %. O curinga _ corresponde a um único caractere, enquanto o curinga % corresponde a zero ou mais caracteres. Um host que contenha curinga deve estar entre aspas simples ('), por exemplo,lily@'30.9.%.%' ou david@'%'.

  • Se uma tentativa de login corresponder a duas contas, a conta com o prefixo de endereço IP correspondente mais longo terá prioridade. O prefixo é a parte do endereço IP anterior a qualquer curinga. Por exemplo, se o sistema tiver duas contas,david@'30.9.12_.xxx' e david@'30.9.1%.234', uma tentativa de login do usuário david a partir do host 30.9.127.xxx usará a conta david@'30.9.12_.xxx'.

  • Quando a VPC está ativada, o endereço IP do host muda.

    Importante

    Para evitar que as configurações de conta e permissão se tornem inválidas, defina o HOST como '%' para corresponder a qualquer endereço IP.

Permissões

Níveis de permissão

  • Nível de banco de dados (Suportado)

  • Nível de tabela (Suportado)

  • Nível global (Ainda não suportado)

  • Nível de coluna (Ainda não suportado)

  • Nível de subprograma (Ainda não suportado)

Permissões suportadas

O PolarDB-X oferece suporte a oito permissões básicas no nível de tabela: CREATE, DROP, ALTER, INDEX, INSERT, DELETE, UPDATE e SELECT.

  • A instrução TRUNCATE requer a permissão DROP na tabela.

  • A instrução REPLACE requer as permissões INSERT e DELETE na tabela.

  • As instruções CREATE INDEX e DROP INDEX requerem a permissão INDEX na tabela.

  • A instrução CREATE SEQUENCE requer a permissão CREATE no nível de banco de dados.

  • A instrução DROP SEQUENCE requer a permissão DROP no nível de banco de dados.

  • A instrução ALTER SEQUENCE requer a permissão ALTER no nível de banco de dados.

  • A instrução INSERT ON DUPLICATE UPDATE requer as permissões INSERT e UPDATE na tabela.

Regras de permissão

  • As permissões estão vinculadas a uma conta (username@'host'), e não apenas a um nome de usuário.

  • Ao conceder uma permissão, o sistema verifica se a tabela especificada existe. Caso contrário, um erro é retornado.

  • Os níveis de permissão são hierárquicos, do maior para o menor: nível global (ainda não suportado), nível de banco de dados, nível de tabela e nível de coluna.

  • A concessão de uma permissão de nível superior substitui quaisquer permissões de nível inferior. A revogação de uma permissão de nível superior também revoga as permissões associadas de nível inferior.

  • Não há suporte para a permissão USAGE.

Concessão de permissões para vários bancos de dados

No

PolarDB-X

5.3.6 e versões posteriores, é possível conceder permissões em vários bancos de dados a uma única conta:

  • Na página Account Management no console do Alibaba Cloud PolarDB-X, crie uma conta e conceda permissões. Este é o método recomendado.

  • Como alternativa, use as instruções SQL CREATE USER e GRANT.

    Nota

    Se você usar instruções SQL, observe o seguinte:

    1. Somente uma conta de administrador pode criar usuários e conceder permissões.

    2. Um administrador só pode conceder permissões no banco de dados que ele gerencia. Por exemplo, se o administrador do banco de dados A criar uma conta new_user@'%' e você quiser que essa conta acesse os bancos de dados A e B, o administrador de A deve conceder permissões para A, e o administrador de B deve conceder permissões para B.

Uso de uma conta multibanco

No PolarDB-X 5.3.6 e versões posteriores, é possível conceder permissões em vários bancos de dados a uma conta. Suponha que uma conta como

new_user@'%'

tenha permissões SELECT e INSERT tanto no banco de dados A quanto no banco de dados B. Aplicam-se as seguintes limitações:

  • Para consultar uma tabela no banco de dados B enquanto estiver conectado ao banco de dados A, primeiro troque de banco de dados executando USE B; SELECT * FROM table_in_B;. Consultas entre bancos de dados, como SELECT * FROM B.table_in_B;, não são suportadas.

  • Para inserir dados em uma tabela no banco de dados B enquanto estiver conectado ao banco de dados A, execute USE B; INSERT INTO table_in_B VALUES('value');. Inserções entre bancos de dados, como INSERT INTO B.table_in_B VALUES('value');, não são suportadas.

  • O mesmo princípio se aplica a outras instruções SQL.

Instruções

Criar uma conta (CREATE USER)

  • Sintaxe

    CREATE USER user_specification [, user_specification] ...
    user_specification: user [ auth_option ]
    auth_option: IDENTIFIED BY 'auth#string'
                
  • Exemplos

    • Crie uma conta chamada lily com a senha 123456. Esta conta só pode se conectar a partir do host 30.9.73.96.

      CREATE USER lily@30.9.73.96 IDENTIFIED BY '123456';        
    • Crie uma conta chamada david que possa se conectar a partir de qualquer host. Esta conta não possui senha.

      CREATE USER david@'%'; 

Excluir uma conta (DROP USER)

  • Sintaxe

    DROP USER user [, user] ...    
  • Exemplo

    Remova a conta lily@30.9.73.96:

    DROP USER lily@30.9.73.96;       

Alterar a senha de uma conta (SET PASSWORD)

  • Sintaxe

    SET PASSWORD FOR user = password_option
    
    password_option: {
        PASSWORD('auth_string')
    }        
  • Exemplo

    Altere a senha da conta

    lily@30.9.73.96

    para

    123456

    .

    SET PASSWORD FOR lily@30.9.73.96 = PASSWORD('123456')         

Conceder permissões a uma conta (GRANT)

  • Sintaxe

    GRANT
        priv_type[, priv_type] ...
        ON priv_level
        TO user_specification [, user_specification] ...
        [WITH GRANT OPTION]
    priv_level: {
      | db_name.*
      | db_name.tbl_name
      | tbl_name
    }
    user_specification:
        user [ auth_option ]
    auth_option: {
        IDENTIFIED BY 'auth#string'
    }
                
    Nota

    Se a conta em uma instrução

    GRANT

    não existir, a instrução falhará, a menos que você inclua uma cláusula

    IDENTIFIED BY

    . Se uma cláusula

    IDENTIFIED BY

    for fornecida, o sistema cria a conta e concede as permissões especificadas.

  • Exemplos

    • Para o banco de dados easydb, crie uma conta chamada david que possa se conectar a partir de qualquer host e tenha todas as permissões no banco de dados.

      # Method 1: Create the account, then grant permissions.
      CREATE USER david@'%' IDENTIFIED BY 'your#password';
      GRANT ALL PRIVILEGES ON easydb.* to david@'%';
      
      # Method 2: Create the account and grant permissions in a single statement.
      GRANT ALL PRIVILEGES ON easydb.* to david@'%' IDENTIFIED BY 'your#password';
    • Para o banco de dados easydb, crie uma conta chamada hanson que possa se conectar a partir de qualquer host e tenha todas as permissões na tabela easydb.employees.

      GRANT ALL PRIVILEGES ON easydb.employees to hanson@'%' 
      IDENTIFIED BY 'your#password';    
    • Para o banco de dados easydb, crie uma conta chamada hanson que só possa se conectar a partir do host 192.168.3.10 e tenha permissões INSERT e SELECT na tabela easydb.emp.

      GRANT INSERT,SELECT ON easydb.emp to hanson@'192.168.3.10' 
      IDENTIFIED BY 'your#password';
    • Para o banco de dados easydb, crie uma conta somente leitura chamada actro que possa se conectar a partir de qualquer host.

      GRANT SELECT ON easydb.* to actro@'%' IDENTIFIED BY 'your#password';          

Revogar permissões (REVOKE)

  • Sintaxe

    • Revoga permissões específicas de uma conta em um nível de permissão especificado por priv_level.

      REVOKE
      priv_type
      [, priv_type] ...
      ON priv_level         
    • Revoga todas as permissões nos níveis de banco de dados e tabela de um usuário.

      REVOKE ALL PRIVILEGES, GRANT OPTION
      FROM user [, user] ...           
  • Exemplos

    • Revogue as permissões CREATE, DROP e INDEX na tabela easydb.emp da conta hanson@'%'.

      REVOKE CREATE,DROP,INDEX ON easydb.emp FROM hanson@'%';      
    • Revogue todas as permissões da conta lily@30.9.73.96.

      REVOKE ALL PRIVILEGES,GRANT OPTION FROM lily@30.9.73.96;       
      Nota

      Para garantir compatibilidade com o MySQL, inclua a cláusula

      GRANT OPTION

      .

Exibir concessões (SHOW GRANTS)

  • Sintaxe

    SHOW GRANTS[ FOR user@host];           
  • Exemplo

    SHOW GRANTS FOR user1@host;       
Nota

No PolarDB-X 5.3.6 e versões posteriores, a instrução

SHOW GRANTS

exibe apenas as permissões do usuário atual. Para visualizar informações sobre todas as contas e permissões, use o console do Alibaba Cloud

PolarDB-X

.