J'utilise l'utilitaire de ligne de commande MySQL et je peux naviguer dans une base de données. Maintenant, je dois voir une liste de comptes d'utilisateurs. Comment puis-je faire ceci?
J'utilise la version MySQL 5.4.1
.
J'utilise l'utilitaire de ligne de commande MySQL et je peux naviguer dans une base de données. Maintenant, je dois voir une liste de comptes d'utilisateurs. Comment puis-je faire ceci?
J'utilise la version MySQL 5.4.1
.
Réponses:
Utilisez cette requête:
SELECT User FROM mysql.user;
Qui affichera un tableau comme celui-ci:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
Comme le souligne Matthew Scharley dans les commentaires sur cette réponse , vous pouvez regrouper par User
colonne si vous souhaitez uniquement voir des noms d'utilisateur uniques.
User
aussi, pour obtenir uniquement des valeurs utilisateur uniques, car il y a une ligne distincte pour chaque entrée user
@ host
.
DELETE FROM mysql.user;
mieux WHERE user='someuser' and host='somehost';
Si vous le faites DELETE FROM mysql.user;
, tous les utilisateurs ont disparu. Les connexions après le prochain redémarrage de mysql ou FLUSH PRIVILEGES;
éliminer les utilisateurs de la mémoire. Voici un exemple de l'un de mes messages sur la façon de faire de manière DELETE FROM mysql.user
responsable: dba.stackexchange.com/questions/4614/…
SHOW GRANTS FOR 'user'@'host';
DISTINCT
mot-clé:SELECT DISTINCT user FROM mysql.user;
Je trouve ce format le plus utile car il inclut le champ hôte qui est important dans MySQL pour distinguer les enregistrements d'utilisateurs.
select User,Host from mysql.user;
host
entrera-t-il en jeu lorsque vous travaillerez avec des bases de données mysql? [Mysql Noob]
host
entre en jeu lorsque vous vous connectez à partir d'un autre serveur. Il est possible d'accorder un accès différent à 'packer'@'example.com'
et'packer'@'google.com'
Un compte utilisateur comprend le nom d'utilisateur et l'accès au niveau de l'hôte.
Par conséquent, c'est la requête qui donne à tous les comptes d'utilisateurs
SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
user@host
format est utilisé pour définir les mots de passe. Omettre l'hôte de la SET PASSWORD
commande génère une erreur. SET PASSWORD FOR wordpressuser = PASSWORD('...');
produit l'erreur ERROR 1133 (42000): Can't find any matching row in the user table
. Incluez l'hôte et cela fonctionne. SET PASSWORD FOR wordpressuser@localhost = PASSWORD('...');
produit Query OK, 0 rows affected (0.00 sec)
.
ORDER BY user
.
pour éviter les répétitions d'utilisateurs lorsqu'ils se connectent d'origine différente:
select distinct 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
. À l'intérieur de cette base de données, les informations utilisateur se trouvent dans une table, un ensemble de données, nommé user
. Si vous souhaitez voir quels utilisateurs sont configurés dans la table d'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 |
| | % |
+------------------+-----------+
Si vous faites référence aux utilisateurs réels de MySQL, essayez:
select User from mysql.user;
SELECT * FROM mysql.user;
C'est un grand tableau, vous voudrez peut-être être plus sélectif sur les champs que vous choisissez.
localhost
, 127.0.0.1
et ::1
. Laquelle dois-je conserver et que dois-je supprimer? Merci!
Connectez-vous à mysql en tant que root et tapez la requête suivante
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
GRANT SELECT ON mysql.user TO 'user1'@'localhost';
maintenant connectez- vous en tant qu'utilisateur1 et tapez commande select User from mysql.user;
Vous verrez la liste des utilisateurs affichée. :) +1 Profitez
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 n'a montré aucune autorisation pour un utilisateur quand 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...
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;
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
use mysql;
la table à la base de données mysql comme vous l'avez fait. Vous pouvez simplementselect User from mysql.user;
use mysql;
est juste pour que vous puissiez utiliser à la select User from user;
place, select User from mysql.user;
car il s'agit généralement d'une requête unique, il n'est pas nécessaire d'utiliser la base de données mysql
use mysql
si vous en aviez utilisé, select user from user;
cela aurait pu être quelque chose, mais à la place vous utilisez mysql.user
, ce qui rend l'utilisation use mysql
au début inutile.
Cela 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 l'invite linux demandera d'abord le mot de passe de l'utilisateur root mysql, en fournissant un mot de passe correct, il imprimera tous les utilisateurs de la base de données 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 Mysql