J'utilise l'utilitaire de ligne de commande MySQL et je peux naviguer dans une base de données. Maintenant, j'ai besoin de voir une liste de comptes d'utilisateurs. Comment puis-je faire ceci?
J'utilise la version MySQL 5.4.1
.
Utilisez cette requête:
SELECT User FROM mysql.user;
Ce qui va sortir un tableau comme ça:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
Comme Matthew Scharley le souligne dans les commentaires sur cette réponse , vous pouvez grouper par colonne User
si vous souhaitez uniquement voir des noms d'utilisateur uniques.
Je trouve ce format le plus utile car il inclut le champ Host, qui est important dans MySQL pour distinguer les enregistrements d’utilisateur.
select User,Host from mysql.user;
Un compte d'utilisateur comprend le nom d'utilisateur et l'accès au niveau de l'hôte.
C'est donc la requête qui donne à tous les comptes d'utilisateurs
SELECT CONCAT(QUOTE(user),'@',QUOTE(Host)) UserAccount FROM mysql.user;
pour éviter les répétitions d'utilisateurs lorsqu'ils se connectent à partir de différentes origines:
select distinct User from mysql.user;
Si vous faites référence aux utilisateurs réels de MySQL, essayez:
select User from mysql.user;
MySQL stocke les informations utilisateur dans sa propre base de données. Le nom de la base de données est MySQL
. Dans cette base de données, les informations utilisateur se trouvent dans une table, un ensemble de données nommé user
. Si vous voulez voir quels utilisateurs sont configurés dans la table des utilisateurs MySQL, exécutez la commande suivante:
SELECT User, Host FROM mysql.user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| root | localhost |
| root | demohost |
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| | % |
+------------------+-----------+
SELECT * FROM mysql.user;
C'est une grande table, vous voudrez peut-être être plus sélectif sur les champs que vous choisissez.
Connectez-vous à mysql en tant que root et tapez la requête suivante
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
La table mysql.db est peut-être plus importante pour déterminer les droits des utilisateurs. Je pense qu'une entrée est créée si vous mentionnez une table dans la commande GRANT. Dans mon cas, la table mysql.users ne montrait aucune permission pour un utilisateur lorsqu'il était évidemment capable de se connecter et de sélectionner, etc.
mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Del...
Peter et Jesse ont raison, mais assurez-vous d’abord de sélectionner la base de données mysql.
use mysql;
select User from mysql.user;
ça devrait faire l'affaire
J'utilise ceci pour trier les utilisateurs, donc les hôtes autorisés sont plus faciles à repérer:
mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;
Ceci affiche la liste des utilisateurs uniques:
SELECT DISTINCT User FROM mysql.user;
$> mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt
L’exécution de cette commande sur linux Prompt demandera d’abord le mot de passe de l’utilisateur root mysql. En fournissant le mot de passe correct, tous les utilisateurs de la base de données seront imprimés dans le fichier texte.
J'ai trouvé le sien plus utile car il fournit des informations supplémentaires sur les privilèges DML et DDL
SELECT user, Select_priv, Insert_priv , Update_priv, Delete_priv,
Create_priv, Drop_priv, Shutdown_priv, Create_user_priv
FROM mysql.user;
SELECT User FROM mysql.user;
utiliser la requête ci-dessus pour obtenir les utilisateurs de Mysql