Dans le monde de la gestion de bases de données, le contrôle de l'accès des utilisateurs est crucial pour maintenir l'intégrité et la sécurité des données. Cet article de blog vous guidera à travers un scénario réel de configuration des autorisations utilisateur MySQL, y compris le processus, les pièges potentiels et les étapes de débogage.
Imaginez que vous êtes administrateur de bases de données dans une entreprise qui possède plusieurs bases de données :
Votre tâche consiste à configurer les autorisations pour un utilisateur nommé « analyste » avec les exigences suivantes :
Voyons comment nous pouvons y parvenir en utilisant les instructions GRANT et REVOKE de MySQL.
Tout d'abord, nous devons nous connecter au serveur MySQL avec un compte administratif :
mysql -h hostname -P port -u admin -p
Remplacez « nom d'hôte », « port » et « admin » par les détails réels de votre serveur et le nom d'utilisateur administrateur.
Si l'utilisateur n'existe pas déjà, il faut le créer :
CREATE USER 'analyst'@'%' IDENTIFIED BY 'password';
Remplacez « mot de passe » par un mot de passe fort et sécurisé.
Maintenant, accordons les autorisations requises :
-- Grant SELECT on original databases GRANT SELECT ON products.* TO 'analyst'@'%'; GRANT SELECT ON customers.* TO 'analyst'@'%'; GRANT SELECT ON orders.* TO 'analyst'@'%'; GRANT SELECT ON analytics.* TO 'analyst'@'%'; -- Grant all privileges on copy databases GRANT ALL PRIVILEGES ON products_copy.* TO 'analyst'@'%'; GRANT ALL PRIVILEGES ON customers_copy.* TO 'analyst'@'%'; GRANT ALL PRIVILEGES ON orders_copy.* TO 'analyst'@'%'; GRANT ALL PRIVILEGES ON analytics_copy.* TO 'analyst'@'%'; -- Grant global privileges GRANT PROCESS, SHOW DATABASES ON *.* TO 'analyst'@'%'; -- Apply the changes FLUSH PRIVILEGES;
Après avoir configuré les autorisations, il est crucial de les vérifier :
SHOW GRANTS FOR 'analyst'@'%';
Dans notre scénario, nous avons initialement rencontré un problème où « analyste » disposait de trop de privilèges :
mysql> SHOW GRANTS FOR 'analyst'@'%'; --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Grants for analyst@% | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO "analyst"@"%" WITH GRANT OPTION | | GRANT REPLICATION_APPLIER,ROLE_ADMIN ON *.* TO "analyst"@"%" WITH GRANT OPTION | ... ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Pour résoudre ce problème, nous avons révoqué tous les privilèges, puis accordé uniquement ceux nécessaires :
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'analyst'@'%'; GRANT PROCESS, SHOW DATABASES ON *.* TO 'analyst'@'%'; -- Then re-grant the specific permissions as shown in Step 3
Après avoir corrigé les privilèges excessifs, nous avons remarqué que les autorisations pour les bases de données de copie étaient manquantes :
mysql> SHOW GRANTS FOR 'analyst'@'%'; ----------------------------------------------------- | Grants for analyst@% | ----------------------------------------------------- | GRANT PROCESS, SHOW DATABASES ON *.* TO "analyst"@"%"| | GRANT SELECT ON "products".* TO "analyst"@"%" | | GRANT SELECT ON "customers".* TO "analyst"@"%" | | GRANT SELECT ON "orders".* TO "analyst"@"%" | | GRANT SELECT ON "analytics".* TO "analyst"@"%" | -----------------------------------------------------
Nous avons ajouté les autorisations manquantes pour les bases de données de copie :
GRANT ALL PRIVILEGES ON products_copy.* TO 'analyst'@'%'; GRANT ALL PRIVILEGES ON customers_copy.* TO 'analyst'@'%'; GRANT ALL PRIVILEGES ON orders_copy.* TO 'analyst'@'%'; GRANT ALL PRIVILEGES ON analytics_copy.* TO 'analyst'@'%'; FLUSH PRIVILEGES;
Après avoir appliqué toutes ces modifications et corrections, les subventions finales devraient ressembler à ceci :
mysql> SHOW GRANTS FOR 'analyst'@'%'; ----------------------------------------------------- | Grants for analyst@% | ----------------------------------------------------- | GRANT PROCESS, SHOW DATABASES ON *.* TO "analyst"@"%"| | GRANT SELECT ON "products".* TO "analyst"@"%" | | GRANT SELECT ON "customers".* TO "analyst"@"%" | | GRANT SELECT ON "orders".* TO "analyst"@"%" | | GRANT SELECT ON "analytics".* TO "analyst"@"%" | | GRANT ALL PRIVILEGES ON "products_copy".* TO "analyst"@"%"| | GRANT ALL PRIVILEGES ON "customers_copy".* TO "analyst"@"%"| | GRANT ALL PRIVILEGES ON "orders_copy".* TO "analyst"@"%"| | GRANT ALL PRIVILEGES ON "analytics_copy".* TO "analyst"@"%"| -----------------------------------------------------
La configuration des autorisations utilisateur MySQL appropriées peut être délicate, mais c'est un aspect crucial de la gestion de la base de données. En utilisant soigneusement les instructions GRANT et REVOKE et en vérifiant toujours les résultats, vous pouvez créer un environnement sécurisé et fonctionnel pour vos utilisateurs.
N'oubliez pas ces points clés :
En suivant ces directives et les étapes décrites dans cet article, vous serez bien équipé pour gérer efficacement les autorisations des utilisateurs MySQL.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3