Todos los productos
Search
Centro de documentos

ApsaraDB RDS:Authorize accounts to manage tables, views, and fields

Última actualización: Sep 03, 2026

Al crear una cuenta en la consola de ApsaraDB RDS, puede otorgarle permisos sobre bases de datos completas. Para restringir una cuenta a tablas, vistas o campos específicos, ejecute sentencias SQL directamente contra la instancia y aplique así una autorización detallada.

Requisitos previos

Antes de empezar, asegúrese de contar con:

  • Una cuenta con privilegios. Para obtener instrucciones, consulte Create an account.

Funcionamiento

La autorización detallada en MySQL utiliza privilegios por niveles. Cada nivel es independiente, por lo que una autorización completa generalmente requiere varias sentencias GRANT.

Nivel

Sintaxis

Tipos de privilegios compatibles

Global

ON *.*

PROCESS, REPLICATION SLAVE, REPLICATION CLIENT, entre otros

Tabla

ON db.table

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

Vista

ON db.view

Solo SELECT

Columna

ON TABLE table (col)

SELECT, UPDATE, entre otros

Las cuentas creadas mediante este procedimiento no pueden ver sus bases de datos autorizadas en la consola de ApsaraDB RDS. Para habilitar la visibilidad de una base de datos en la consola, utilice un nombre de tabla comodín ( * ) en lugar de un nombre de tabla específico al otorgar permisos de tabla.

Otorgar permisos de tabla

Utilice una cuenta con privilegios para connect to the RDS instance y luego ejecute las siguientes sentencias SQL.

Paso 1: Crear una cuenta.

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

Paso 2: Otorgar permisos globales.

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

Paso 3: Otorgar permisos completos sobre una tabla específica.

GRANT ALL PRIVILEGES ON `<database>`.`<table>` TO '<username>'@'%';
Reemplace <table> por * para otorgar acceso a todas las tablas de la base de datos. Esto también permite que la cuenta vea la base de datos en la consola de ApsaraDB RDS.

Paso 4: Otorgar permisos de solo lectura sobre las tablas del sistema mysql de uso común.

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.

Ejemplos

Autorizar una cuenta para gestionar una tabla

Cree la cuenta test01 con acceso completo a la tabla test100 en la base de datos 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 una cuenta para gestionar varias tablas

Cree la cuenta test02 con acceso completo a las tablas test100, test200 y test300 en la base de datos 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'@'%';

Otorgar permisos de vista

SELECT es el único tipo de privilegio que se puede otorgar a nivel de vista.

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

Ejemplos

Autorizar una cuenta para consultar una vista

GRANT SELECT ON rds001.view_test1 TO test01;

Autorizar una cuenta para consultar varias vistas

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

Otorgar permisos de campo

Los permisos a nivel de columna restringen el acceso a campos específicos dentro de una tabla. Cada tipo de privilegio debe ir seguido del nombre de la columna entre paréntesis.

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.

Ejemplos

Autorizar una cuenta para actualizar un campo

GRANT UPDATE (testid) ON TABLE testtable TO test01;

Autorizar una cuenta para actualizar varios campos

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

Alternativa: usar Data Management (DMS)

Ejecute las mismas sentencias SQL en Data Management (DMS) en lugar de utilizar un cliente o la CLI.

Preguntas frecuentes

Recibo el error "Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation" al ejecutar las sentencias SQL. ¿Qué debo hacer?

La cuenta que utilizó carece del privilegio CREATE USER. Utilice la cuenta con privilegios para ejecutar las sentencias, u otorgue primero el privilegio a su cuenta actual:

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