Ich verwende das MySQL-Befehlszeilenprogramm und kann durch eine Datenbank navigieren. Jetzt muss ich eine Liste der Benutzerkonten sehen. Wie kann ich das machen?
Ich verwende MySQL-Version 5.4.1
.
Verwenden Sie diese Abfrage:
SELECT User FROM mysql.user;
Welche wird eine Tabelle wie folgt ausgeben:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
Wie Matthew Scharley in den Kommentaren zu dieser Antwort hervorhebt , können Sie nach der Spalte User
gruppieren, wenn Sie nur eindeutige Benutzernamen sehen möchten.
Ich finde dieses Format am nützlichsten, da es das Host-Feld enthält, das in MySQL wichtig ist, um Benutzerdatensätze zu unterscheiden.
select User,Host from mysql.user;
Ein Benutzerkonto umfasst den Benutzernamen und den Zugriff auf Host-Ebene.
Daher ist dies die Abfrage, die allen Benutzer Konten gibt
SELECT CONCAT(QUOTE(user),'@',QUOTE(Host)) UserAccount FROM mysql.user;
so vermeiden Sie Wiederholungen von Benutzern, wenn sie eine Verbindung aus unterschiedlichen Ursprungsländern herstellen:
select distinct User from mysql.user;
Wenn Sie sich auf die tatsächlichen MySQL-Benutzer beziehen, versuchen Sie Folgendes:
select User from mysql.user;
MySQL speichert die Benutzerinformationen in einer eigenen Datenbank. Der Name der Datenbank lautet MySQL
. In dieser Datenbank befinden sich die Benutzerinformationen in einer Tabelle, einem Datensatz mit dem Namen user
. Wenn Sie sehen möchten, welche Benutzer in der MySQL-Benutzertabelle eingerichtet sind, führen Sie den folgenden Befehl aus:
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;
Es handelt sich um eine große Tabelle, daher sollten Sie die ausgewählten Felder genauer auswählen.
Melden Sie sich als root bei mysql an und geben Sie die folgende Abfrage ein
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
Die mysql.db-Tabelle ist möglicherweise wichtiger für die Bestimmung der Benutzerrechte. Ich denke, ein Eintrag darin wird erstellt, wenn Sie eine Tabelle im GRANT-Befehl erwähnen. In meinem Fall zeigte die Tabelle mysql.users keine Berechtigungen für einen Benutzer, wenn offensichtlich eine Verbindung hergestellt und ausgewählt werden konnte usw.
mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Del...
Peter und Jesse sind korrekt, aber stellen Sie sicher, dass Sie zuerst die mysql-DB auswählen.
use mysql;
select User from mysql.user;
das sollte deinen Trick tun
Ich benutze dies, um die Benutzer zu sortieren, sodass die erlaubten Hosts leichter zu erkennen sind:
mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;
Dies zeigt eine Liste von eindeutigen Benutzern an:
SELECT DISTINCT User FROM mysql.user;
$> mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt
Wenn Sie diesen Befehl unter linux Prompt ausführen, werden Sie zunächst nach dem Kennwort des root-Benutzers von mysql gefragt. Wenn Sie das richtige Kennwort angeben, werden alle Datenbankbenutzer in die Textdatei geschrieben.
Ich fand das eine mehr nützlich, da es zusätzliche Informationen zu DML- und DDL-Berechtigungen enthält
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;
verwenden Sie die obige Abfrage, um MySQL-Benutzer zu erhalten