MySQL SHOW GRANTS
affiche les permissions de l'utilisateur actuel.
Existe-t-il un moyen de se connecter en tant que root et d'afficher les autorisations de tous les utilisateurs?
mysql
permissions
Adam Matan
la source
la source
ERROR 1146 (42S02): Table 'common_schema.sql_show_grants' doesn't exist
information_schema.user_privileges
?MODIFIER:
Comme mentionné par Shlomi Noach:
la source
information_schema.user_privileges
répertorie uniquement les privilèges de niveau utilisateur, tels queSUPER
,RELOAD
etc. Il répertorie également les autorisations DML complètes telles queSELECT
. Il ne répertorie pas les privilèges spécifiques aux bases de données, aux tables, aux colonnes et aux sous-programmes. ParGRANT SELECT ON mydb.* TO myuser@localhost
conséquent , la subvention ne s'affiche pasinformation_schema.user_privileges
. Lacommon_schema
solution présentée ci-dessus regroupe les données deuser_privileges
et d'autres tableaux pour vous donner une image complète.Ce fragment de shell Linux parcourt tous les utilisateurs de MySQL et effectue un SHOW GRANTS pour chacun:
Fonctionne mieux si vous pouvez vous connecter à MySQL sans mot de passe.
La sortie est formatée pour pouvoir être exécutée dans un shell MySQL. Attention: La sortie contient également les permissions de l'utilisateur MySQL et le mot de passe! Supprimez ces lignes si vous ne voulez pas que l'utilisateur root de MySQL soit changé.
la source
mysql --defaults-file=/auth/root-mysql.cnf --batch --skip-column-names --execute "SELECT User, Host from mysql.user" | while read user host; do echo "SHOW GRANTS FOR '${user}'@'${host}';"; done | mysql --defaults-file=/auth/root-mysql.cnf --batch | sed 's/^Grants for/-- Grants for/'
select * from mysql.user;
Peut vous donner la liste des utilisateurs et les privilèges attribués à chacun d'eux, nécessite l'accès à la
mysql.user
table et l'root
utilisateur la possède.la source
mysql.db
. Les privilèges sur des tables spécifiques sont inclusmysql.tables_priv
, etc. Donc ce n'est pas si simple.select * from mysql.user
dans crackstation.net et affichez la sortie non hachée.Une doublure (changer
-uroot
pour-u$USER_NAME
pour une utilisation avec d' autres utilisateurs) dans un bash Unix ( en raison des accents graves):ou sans backticks et avec mot de passe inline (l'espace devant la commande l'exclut de l'historique Bash dans Ubuntu):
Sous Windows:
la source
Si vous pouvez exécuter les instructions SELECT suivantes sans erreur:
alors n'hésitez pas à utiliser le code suivant (ci-dessous), écrit en syntaxe .sql.
J'ai conçu cette requête dans le but de reconstruire les instructions GRANT pour toutes les autorisations existantes (pour un entretien fréquent lors de la migration de la base de données). Il existe quelques problèmes à résoudre, tels que la liaison utilisateur-mot de passe, mais étant donné que nous mettons souvent à jour les mots de passe, cela ne faisait pas partie du projet.
Heureux de répondre / vérifier toute question ou préoccupation
la source
Cela vous donnera une meilleure vue ...
la source
La commande
SHOW GRANTS [FOR user]
peut montrer n'importe quel utilisateur que vous voulez. Voir ici pour plus de détails.la source
Comme indiqué dans cette réponse , vous pouvez exécuter le jeu de commandes suivant pour répertorier les privilèges spécifiques à la base de données, à la table, aux colonnes et à la routine de tous les utilisateurs. Notez que vous devez l'exécuter à partir du shell, pas à l'invite de commande MySQL.
L'avantage de cette approche est qu'il n'est pas nécessaire d'installer un logiciel supplémentaire.
la source
Si vous administrez souvent des bases de données, vous voudrez probablement conserver des privilèges restreints. Vous pouvez utiliser une procédure stockée pour exécuter rapidement une vérification. Cet exemple fonctionne dans mariadb et pourrait nécessiter un ajustement pour fonctionner avec la version standard de mysql.
En utilisant la réponse de Mansur Ali avec un petit ajustement réordonnant les colonnes et en ajoutant un peu d'ordre pour mieux organiser la sortie.
En utilisant un login root:
Vous pouvez changer la procédure pour vérifier la table mysql.user à la place.
Utilisation, en utilisant un login root:
J'ai utilisé mysql workbench sur Ubuntu pour exécuter la partie procédure de création de cette réponse.
À part un peu en dehors du sujet ici, vous pourriez aussi avoir une procédure pour montrer des hôtes ou des utilisateurs inconnus. Un exemple pour les hôtes inconnus:
Remarque sur l'utilisation: Fournissez une chaîne d'hôtes séparées par des virgules afin qu'un seul jeu de '' soit utilisé:
Vous pouvez également créer la variable de colonne en incluant un autre paramètre dans la procédure et en l'appelant avec ShowUnknownHosts (user, 'user1, user2'); par exemple.
la source