Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Autorizar contas a gerenciar tabelas, visualizações e campos

Última atualização: Jun 26, 2026

Ao criar uma conta no console do ApsaraDB RDS, você pode conceder permissões em bancos de dados inteiros. Para restringir o acesso de uma conta a tabelas, visualizações ou campos específicos, execute instruções SQL diretamente na instância e aplique uma autorização refinada.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Uma conta privilegiada. Para obter instruções, consulte Criar uma conta.

Como funciona

A autorização refinada no MySQL usa privilégios em camadas. Cada nível é independente; portanto, uma autorização completa geralmente exige múltiplas instruções GRANT.

Nível

Sintaxe

Tipos de privilégio suportados

Global

ON *.*

PROCESS, REPLICATION SLAVE, REPLICATION CLIENT, entre outros

Tabela

ON db.table

ALL PRIVILEGES, SELECT, UPDATE, INSERT, DELETE, entre outros

Visualização

ON db.view

Apenas SELECT

Coluna

ON TABLE table (col)

SELECT, UPDATE, entre outros

Contas criadas por este procedimento não conseguem visualizar os bancos de dados autorizados no console do ApsaraDB RDS. Para garantir a visibilidade de um banco de dados no console, use o caractere curinga ( * ) como nome da tabela em vez de um nome específico ao conceder permissões de tabela.

Conceder permissões de tabela

Use uma conta privilegiada para conectar-se à instância RDS e execute as seguintes instruções SQL.

Etapa 1: Criar uma conta.

CREATE USER `<username>`@`%` IDENTIFIED BY '<password>';

Etapa 2: Conceder permissões globais.

GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '<username>'@'%';

Etapa 3: Conceder permissões totais em uma tabela específica.

GRANT ALL PRIVILEGES ON `<database>`.`<table>` TO '<username>'@'%';
Substitua <table> por * para conceder acesso a todas as tabelas do banco de dados. Essa ação também permite que a conta visualize o banco de dados no console do ApsaraDB RDS.

Etapa 4: Conceder permissões de somente leitura nas tabelas de sistema mysql mais usadas.

GRANT SELECT ON `mysql`.`help_topic` TO '<username>'@'%';
GRANT SELECT ON `mysql`.`func` TO '<username>'@'%';
GRANT SELECT ON `mysql`.`time_zone` TO '<username>'@'%';
GRANT SELECT ON `mysql`.`slow_log` TO '<username>'@'%';
GRANT SELECT ON `mysql`.`proc` TO '<username>'@'%';
GRANT SELECT ON `mysql`.`general_log` TO '<username>'@'%';
-- Grant permissions on other system tables based on your requirements.

Exemplos

Autorizar uma conta a gerenciar uma única tabela

Crie a conta test01 com acesso total à tabela test100 no banco de dados rds001.

CREATE USER `test01`@`%` IDENTIFIED BY 'passwd';
GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test01'@'%';
GRANT ALL PRIVILEGES ON `rds001`.`test100` TO 'test01'@'%';
GRANT SELECT ON `mysql`.`help_topic` TO 'test01'@'%';
GRANT SELECT ON `mysql`.`func` TO 'test01'@'%';

Autorizar uma conta a gerenciar várias tabelas

Crie a conta test02 com acesso total às tabelas test100, test200 e test300 no banco de dados rds001.

CREATE USER `test02`@`%` IDENTIFIED BY 'passwd';
GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test02'@'%';
GRANT ALL PRIVILEGES ON `rds001`.`test100` TO 'test02'@'%';
GRANT ALL PRIVILEGES ON `rds001`.`test200` TO 'test02'@'%';
GRANT ALL PRIVILEGES ON `rds001`.`test300` TO 'test02'@'%';
GRANT SELECT ON `mysql`.`help_topic` TO 'test02'@'%';
GRANT SELECT ON `mysql`.`func` TO 'test02'@'%';

Conceder permissões de visualização

O privilégio SELECT é o único tipo concedido no nível de visualização.

GRANT SELECT ON <database>.<view> TO <username>;

Exemplos

Autorizar uma conta a consultar uma única visualização

GRANT SELECT ON rds001.view_test1 TO test01;

Autorizar uma conta a consultar várias visualizações

GRANT SELECT ON rds001.view_test1 TO test01;
GRANT SELECT ON rds001.view_test2 TO test01;

Conceder permissões de campo

As concessões no nível de coluna restringem o acesso a campos específicos de uma tabela. Cada tipo de privilégio deve ser seguido pelo nome da coluna entre parênteses.

GRANT UPDATE (<field>) ON TABLE <table> TO <username>;   -- Authorize updates to a field.
GRANT SELECT (<field>) ON TABLE <table> TO <username>;   -- Authorize queries on a field.

Exemplos

Autorizar uma conta a atualizar um único campo

GRANT UPDATE (testid) ON TABLE testtable TO test01;

Autorizar uma conta a atualizar vários campos

GRANT UPDATE (test_id) ON TABLE testtable TO test01;
GRANT UPDATE (test_name) ON TABLE testtable TO test01;

Alternativa: usar o Data Management (DMS)

Execute as mesmas instruções SQL no Data Management (DMS) em vez de usar um cliente ou a CLI.

Perguntas frequentes

Recebo a mensagem "Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation" ao executar as instruções SQL. O que devo fazer?

A conta usada não tem o privilégio CREATE USER. Use a conta privilegiada para executar as instruções ou conceda primeiro esse privilégio à sua conta atual:

GRANT CREATE USER ON *.* TO 'your_user'@'host';
FLUSH PRIVILEGES;