Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Modèle de privilèges basé sur les rôles pour for My RDS SQL
À partir RDS de la SQL version 8.0.36 de My, vous ne pouvez pas modifier directement les tables de la mysql
base de données. En particulier, vous ne pouvez pas créer d'utilisateurs de base de données en effectuant des opérations du langage de manipulation des données (DML) sur les grant
tables. Vous utilisez plutôt les instructions de SQL gestion de mon compte telles que CREATE
USER
GRANT
, et REVOKE
pour accorder des privilèges basés sur les rôles aux utilisateurs. Vous ne pouvez pas non plus créer d'autres types d'objets tels que des procédures stockées dans la base de données mysql
. Vous pouvez toujours interroger les tables mysql
. Si vous utilisez la réplication binaire des journaux, les modifications apportées directement aux mysql
tables de l'instance de base de données source ne sont pas répliquées sur le cluster cible.
Dans certains cas, votre application peut utiliser des raccourcis pour créer des utilisateurs ou d'autres objets en les insérant dans les tables mysql
. Le cas échéant, modifiez le code de votre application pour utiliser les instructions correspondantes telles que CREATE
USER
.
Pour exporter des métadonnées destinées aux utilisateurs de la base de données lors de la migration depuis une SQL base de données My database externe, appliquez l'une des méthodes suivantes :
Utilisez l'utilitaire de vidage d'instance de My SQL Shell avec un filtre pour exclure les utilisateurs, les rôles et les autorisations. L'exemple suivant montre la syntaxe de commande à utiliser. Assurez-vous qu'il
outputUrl
est vide.mysqlsh user@host -- util.dumpInstance(outputUrl,{excludeSchemas:['mysql'],users: true})
Pour plus d'informations, consultez les rubriques Utilitaire Instance Dump, Schema Dump Utility et Table Dump Utility
dans le My SQL Reference Manual. Utilisez l'utilitaire
mysqlpump
client. Cet exemple inclut toutes les tables à l'exception des tables de la base de donnéesmysql
système. Il inclut égalementCREATE USER
desGRANT
instructions pour reproduire tous les SQL utilisateurs My dans la base de données migrée.mysqlpump --exclude-databases=mysql --users
Pour simplifier la gestion des autorisations pour de nombreux utilisateurs ou applications, vous pouvez utiliser l'instruction CREATE ROLE
pour créer un rôle doté d'un ensemble d'autorisations. Vous pouvez ensuite utiliser les instructions GRANT
et SET ROLE
, et la fonction current_role
pour attribuer des rôles à des utilisateurs ou des applications, changer le rôle actuel et vérifier les rôles en vigueur. Pour plus d'informations sur le système d'autorisation basé sur les rôles dans My SQL 8.0, consultez la section Utilisation des rôles
Important
Nous vous recommandons vivement de ne pas avoir recours au rôle d'utilisateur principal directement dans vos applications. Au lieu de cela, respectez la bonne pratique qui consiste à avoir recours à un utilisateur de base de données doté des privilèges minimum requis pour votre application.
À partir de la version 8.0.36, RDS for My SQL inclut un rôle spécial doté de tous les privilèges suivants. Ce rôle est nommé rds_superuser_role
. Ce rôle est déjà accordé à l'utilisateur administratif principal de chaque instance de base de données. Le rôle rds_superuser_role
inclut les privilèges suivants pour tous les objets de base de données :
-
ALTER
-
APPLICATION_PASSWORD_ADMIN
-
ALTER ROUTINE
-
CREATE
-
CREATE ROLE
-
CREATE ROUTINE
-
CREATE TEMPORARY TABLES
-
CREATE USER
-
CREATE VIEW
-
DELETE
-
DROP
-
DROP ROLE
-
EVENT
-
EXECUTE
-
INDEX
-
INSERT
-
LOCK TABLES
-
PROCESS
-
REFERENCES
-
RELOAD
-
REPLICATION CLIENT
-
REPLICATION SLAVE
-
ROLE_ADMIN
-
SET_USER_ID
-
SELECT
-
SHOW DATABASES
-
SHOW VIEW
-
TRIGGER
-
UPDATE
-
XA_RECOVER_ADMIN
La définition du rôle inclut également WITH GRANT OPTION
afin qu'un utilisateur administratif puisse accorder ce rôle à d'autres utilisateurs. En particulier, l'administrateur doit accorder tous les privilèges nécessaires pour effectuer la réplication des journaux binaires avec le My SQL cluster comme cible.
Astuce
Pour voir tous les détails des autorisations, utilisez l'instruction suivante.
SHOW GRANTS FOR rds_superuser_role@'%';
Lorsque vous accordez l'accès à l'aide RDS de rôles dans My SQL version 8.0.36 ou ultérieure, vous activez également le rôle à l'aide de l'instruction SET ROLE
orrole_name
SET ROLE ALL
. L'exemple suivant montre comment procéder. Remplacez le nom de rôle approprié par CUSTOM_ROLE
.
# Grant role to user
mysql>
GRANT CUSTOM_ROLE TO 'user
'@'domain-or-ip-address
' # Check the current roles for your user. In this case, the CUSTOM_ROLE role has not been activated. # Only the rds_superuser_role is currently in effect.mysql>
SELECT CURRENT_ROLE();+--------------------------+ | CURRENT_ROLE() | +--------------------------+ | `rds_superuser_role`@`%` | +--------------------------+ 1 row in set (0.00 sec)
# Activate all roles associated with this user using SET ROLE. # You can activate specific roles or all roles. # In this case, the user only has 2 roles, so we specify ALL.mysql>
SET ROLE ALL;Query OK, 0 rows affected (0.00 sec)
# Verify role is now activemysql>
SELECT CURRENT_ROLE();+--------------------------------------------------+ | CURRENT_ROLE() | +--------------------------------------------------+ | `CUSTOM_ROLE`@`%`,`rds_superuser_role`@`%` | +--------------------------------------------------+