36 votes

Comment savoir tous les utilisateurs pouvant accéder à une base de données (MySQL) ?

Comment savoir tous les utilisateurs qui peuvent accéder à une base de données?

33voto

user79644 Points 506

Connectez-vous à l'instance mysql en tant qu'utilisateur administrateur (généralement en tant que root) et exécutez la commande suivante...

select user from mysql.db where db='NOM_BASE_DE_DONNÉES';

16voto

Scott Duckworth Points 806

La réponse de l'utilisateur79644 obtient les utilisateurs avec des privilèges au niveau de la base de données mais ne tiendra pas compte des utilisateurs ayant uniquement des privilèges au niveau des tables, des colonnes ou des procédures. Pour les trouver tous, utilisez les déclarations suivantes:

SELECT user,host FROM db WHERE db='name';
SELECT user,host FROM tables_priv WHERE db='name';
SELECT user,host FROM columns_priv WHERE db='name';
SELECT user,host FROM procs_priv WHERE db='name';

Dans MySQL 5.5 au moins, il semble que le fait d'avoir des privilèges au niveau des colonnes implique que vous avez des privilèges au niveau des tables. Avoir des privilèges au niveau des tables n'implique pas que vous avez des privilèges au niveau de la base de données. Pas sûr des privilèges au niveau des procédures.

10voto

silviud Points 2667
# utilisateurs actuels qui accèdent à la base de données
mysql> show processlist;
+-----+------+-----------+------+---------+------+-------+------------------+
| Id  | User | Host      | db   | Command | Time | State | Info             |
+-----+------+-----------+------+---------+------+-------+------------------+
| 214 | root | localhost | NULL | Query   |    0 | NULL  | show processlist |
+-----+------+-----------+------+---------+------+-------+------------------+

# qui peut accéder à quoi à tout moment et son niveau de privilège
mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+

# quels privilèges sont disponibles
mysql> show privileges;

4voto

user4514 Points 403

Vous devez garder à l'esprit que le MySQL GRANT pour les bases de données peut contenir des caractères génériques. Cela doit être pris en compte en utilisant LIKE dans la requête :

SELECT utilisateur,hôte FROM db WHERE 'nom' LIKE db;
SELECT utilisateur,hôte FROM tables_priv WHERE db='nom';
SELECT utilisateur,hôte FROM columns_priv WHERE db='nom';
SELECT utilisateur,hôte FROM procs_priv WHERE db='nom';

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X