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 die MySQL-Version 5.4.1
.
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 die MySQL-Version 5.4.1
.
Antworten:
Verwenden Sie diese Abfrage:
SELECT User FROM mysql.user;
Welches wird eine Tabelle wie folgt ausgeben:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
Wie Matthew Scharley in den Kommentaren zu dieser Antwort hervorhebt , können Sie nach User
Spalten gruppieren, wenn Sie nur eindeutige Benutzernamen sehen möchten.
User
, um nur eindeutige Benutzerwerte zu erhalten, da es für jeden user
@ host
-Eintrag eine separate Zeile gibt .
DELETE FROM mysql.user;
besser haben WHERE user='someuser' and host='somehost';
Wenn Sie dies tun DELETE FROM mysql.user;
, sind alle Benutzer weg. Anmeldungen nach dem nächsten MySQL-Neustart oder FLUSH PRIVILEGES;
Entfernen von Benutzern aus dem Speicher. Hier ist ein Beispiel für einen meiner Beiträge zum DELETE FROM mysql.user
verantwortungsvollen Handeln
SHOW GRANTS FOR 'user'@'host';
DISTINCT
Schlüsselwort verwenden:SELECT DISTINCT user FROM mysql.user;
Ich finde dieses Format am nützlichsten, da es das Hostfeld enthält, das in MySQL wichtig ist, um zwischen Benutzerdatensätzen zu unterscheiden.
select User,Host from mysql.user;
host
bei der Arbeit mit MySQL-Datenbanken zum Tragen kommen? [MySQL Noob]
host
kommt ins Spiel, wenn Sie eine Verbindung von einem anderen Server herstellen. Es ist möglich, unterschiedlichen Zugang zu 'packer'@'example.com'
und'packer'@'google.com'
Ein Benutzerkonto besteht aus dem Benutzernamen und dem Zugriff auf Hostebene.
Daher ist dies die Abfrage, die alle Benutzerkonten angibt
SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
user@host
Format wird zum Festlegen von Passwörtern verwendet. Das Weglassen des Hosts aus dem SET PASSWORD
Befehl führt zu einem Fehler. SET PASSWORD FOR wordpressuser = PASSWORD('...');
erzeugt den Fehler ERROR 1133 (42000): Can't find any matching row in the user table
. Schließen Sie den Host ein und es funktioniert. SET PASSWORD FOR wordpressuser@localhost = PASSWORD('...');
produziert Query OK, 0 rows affected (0.00 sec)
.
ORDER BY user
.
um Wiederholungen von Benutzern zu vermeiden, wenn sie eine Verbindung von einem anderen Ursprung herstellen:
select distinct User from mysql.user;
MySQL speichert die Benutzerinformationen in einer eigenen Datenbank. Der Name der Datenbank lautet MySQL
. Innerhalb dieser Datenbank befinden sich die Benutzerinformationen in einer Tabelle, einem Dataset 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 |
| | % |
+------------------+-----------+
Wenn Sie sich auf die tatsächlichen MySQL-Benutzer beziehen, versuchen Sie:
select User from mysql.user;
SELECT * FROM mysql.user;
Es ist eine große Tabelle, daher möchten Sie möglicherweise selektiver entscheiden, welche Felder Sie auswählen.
localhost
, 127.0.0.1
Und ::1
. Welches muss ich behalten und was muss ich löschen? Vielen Dank!
Melden Sie sich bei mysql als root an und geben Sie die folgende Abfrage ein
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
GRANT SELECT ON mysql.user TO 'user1'@'localhost';
Melden select User from mysql.user;
Sie sich als Root-Benutzer an und geben Sie den Befehl ein. Melden Sie sich jetzt als Benutzer1 an und geben Sie den Befehl ein. Die Benutzerliste wird angezeigt. :) +1 Viel Spaß
Die Tabelle mysql.db ist möglicherweise wichtiger für die Bestimmung der Benutzerrechte. Ich denke, ein Eintrag darin wird erstellt, wenn Sie eine Tabelle im Befehl GRANT erwähnen. In meinem Fall zeigte die Tabelle mysql.users keine Berechtigungen für einen Benutzer, wenn er offensichtlich eine Verbindung herstellen und auswählen konnte usw.
mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Del...
Ich verwende dies, um die Benutzer zu sortieren, damit die zulässigen Hosts leichter zu erkennen sind:
mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;
Peter und Jesse sind korrekt, aber stellen Sie sicher, dass Sie zuerst die MySQL-Datenbank auswählen.
use mysql;
select User from mysql.user;
das sollte deinen Trick machen
use mysql;
Sie die Tabelle wie Sie auf die MySQL-Datenbank übertragen. Sie können nurselect User from mysql.user;
use mysql;
ist nur so, dass Sie es select User from user;
stattdessen verwenden können, select User from mysql.user;
da es normalerweise eine einmalige Abfrage ist. Es ist nicht erforderlich, die MySQL-Datenbank zu verwenden
use mysql
wenn Sie verwendet hätten, select user from user;
als das könnte etwas gewesen sein, aber stattdessen verwenden Sie mysql.user
, was die Verwendung use mysql
am Anfang unnötig macht.
Dies zeigt eine Liste eindeutiger Benutzer an:
SELECT DISTINCT User FROM mysql.user;
$> mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt
Wenn Sie diesen Befehl an der Linux-Eingabeaufforderung ausführen, werden Sie zuerst nach dem Kennwort des MySQL-Root-Benutzers gefragt. Wenn Sie das richtige Kennwort angeben, werden alle Datenbankbenutzer in die Textdatei gedruckt.
Ich fand seine nützlichere, da sie 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