Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Autoriser des comptes à gérer des tables, des vues et des champs

Dernière mise à jour :Aug 19, 2026

Lorsque vous créez un compte dans la console ApsaraDB RDS, vous pouvez lui accorder des autorisations sur des bases de données entières. Pour restreindre un compte à des tables, des vues ou des champs spécifiques, exécutez directement des instructions SQL sur l'instance afin d'appliquer une autorisation granulaire.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un compte privilégié. Pour obtenir des instructions, consultez la rubrique Créer un compte.

Fonctionnement

L'autorisation granulaire dans MySQL repose sur des privilèges hiérarchisés. Chaque niveau étant indépendant, une autorisation complète nécessite généralement plusieurs instructions GRANT.

Niveau Syntaxe Types de privilèges pris en charge
Global ON *.* PROCESS, REPLICATION SLAVE, REPLICATION CLIENT et autres
Table ON db.table ALL PRIVILEGES, SELECT, UPDATE, INSERT, DELETE et autres
Vue ON db.view SELECT uniquement
Colonne ON TABLE table (col) SELECT, UPDATE et autres
Les comptes créés via cette procédure ne peuvent pas afficher leurs bases de données autorisées dans la console ApsaraDB RDS. Pour rendre une base de données visible dans la console, utilisez un nom de table générique ( * ) au lieu d'un nom de table spécifique lors de l'attribution des autorisations sur les tables.

Accorder des autorisations sur les tables

Utilisez un compte privilégié pour vous connecter à l'instance RDS, puis exécutez les instructions SQL suivantes.

Étape 1 : Créez un compte.

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

Étape 2 : Accordez des autorisations globales.

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

Étape 3 : Accordez toutes les autorisations sur une table spécifique.

GRANT ALL PRIVILEGES ON `<database>`.`<table>` TO '<username>'@'%';
Remplacez <table> par * pour accorder l'accès à toutes les tables de la base de données. Cela permet également au compte d'afficher la base de données dans la console ApsaraDB RDS.

Étape 4 : Accordez des autorisations en lecture seule sur les tables système mysql couramment utilisées.

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.

Exemples

Autoriser un compte à gérer une table

Créez le compte test01 avec un accès complet à la table test100 dans la base de données 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'@'%';

Autoriser un compte à gérer plusieurs tables

Créez le compte test02 avec un accès complet aux tables test100, test200 et test300 dans la base de données 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'@'%';

Accorder des autorisations sur les vues

Le privilège SELECT est le seul type de privilège que vous pouvez accorder au niveau d'une vue.

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

Exemples

Autoriser un compte à interroger une vue

GRANT SELECT ON rds001.view_test1 TO test01;

Autoriser un compte à interroger plusieurs vues

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

Accorder des autorisations sur les champs

Les autorisations au niveau des colonnes limitent l'accès à des champs spécifiques au sein d'une table. Chaque type de privilège doit être suivi du nom de la colonne entre parenthèses.

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.

Exemples

Autoriser un compte à mettre à jour un champ

GRANT UPDATE (testid) ON TABLE testtable TO test01;

Autoriser un compte à mettre à jour plusieurs champs

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

Alternative : utiliser Data Management (DMS)

Exécutez les mêmes instructions SQL dans Data Management (DMS) plutôt que via un client ou la CLI.

FAQ

J'obtiens l'erreur « Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation » lors de l'exécution des instructions SQL. Que dois-je faire ?

Le compte utilisé ne dispose pas du privilège CREATE USER. Utilisez le compte privilégié pour exécuter les instructions, ou accordez d'abord ce privilège à votre compte actuel :

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