Réponses:
Connectez-vous à l'instance mysql en tant qu'utilisateur administrateur (généralement en tant que root) et donnez la commande suivante ...
select user from mysql.db where db='DB_NAME';
select user from mysql.db
sans qualification renvoie également 2 lignes vides.
La réponse de user79644 obtient les utilisateurs avec des privilèges au niveau de la base de données, mais les utilisateurs ne disposant que des privilèges au niveau de la table, de la colonne ou de la procédure manqueront. Pour les trouver tous, utilisez les instructions 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 ayez des privilèges au niveau des tables. Avoir des privilèges au niveau de la table n'implique pas que vous ayez des privilèges au niveau de la base de données. Pas sûr des privilèges au niveau de la procédure.
ERROR 1046 (3D000): No database selected
mysql
base de données. C'est là que toutes les données utilisées par MySQL sont stockées. Soit donner la commande USE mysql;
d'ajouter le nom de la base de données aux noms de table, comme FROM mysql.db
ouFROM mysql.tables_priv
# current users that access the db
mysql> show processlist;
+-----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+-----------+------+---------+------+-------+------------------+
| 214 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+-----+------+-----------+------+---------+------+-------+------------------+
# who can access what at anytime and his privilege level
mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
# what privileges are available
mysql> show privileges;
Vous devez garder à l'esprit que MySQLGRANT
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 user,host FROM db WHERE 'name' LIKE db;
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';