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
.
mysql
command-line
mysql5
verbrannter Zucker
quelle
quelle
Antworten:
Verwenden Sie diese Abfrage:
Welches wird eine Tabelle wie folgt ausgeben:
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.quelle
User
, um nur eindeutige Benutzerwerte zu erhalten, da es für jedenuser
@host
-Eintrag eine separate Zeile gibt .DELETE FROM mysql.user;
besser habenWHERE user='someuser' and host='somehost';
Wenn Sie dies tunDELETE FROM mysql.user;
, sind alle Benutzer weg. Anmeldungen nach dem nächsten MySQL-Neustart oderFLUSH PRIVILEGES;
Entfernen von Benutzern aus dem Speicher. Hier ist ein Beispiel für einen meiner Beiträge zumDELETE FROM mysql.user
verantwortungsvollen HandelnSHOW 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.
quelle
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
quelle
user@host
Format wird zum Festlegen von Passwörtern verwendet. Das Weglassen des Hosts aus demSET PASSWORD
Befehl führt zu einem Fehler.SET PASSWORD FOR wordpressuser = PASSWORD('...');
erzeugt den FehlerERROR 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('...');
produziertQuery 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:
quelle
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 Namenuser
. Wenn Sie sehen möchten, welche Benutzer in der MySQL-Benutzertabelle eingerichtet sind, führen Sie den folgenden Befehl aus:quelle
Wenn Sie sich auf die tatsächlichen MySQL-Benutzer beziehen, versuchen Sie:
quelle
Es ist eine große Tabelle, daher möchten Sie möglicherweise selektiver entscheiden, welche Felder Sie auswählen.
quelle
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
quelle
GRANT SELECT ON mysql.user TO 'user1'@'localhost';
Meldenselect 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.
quelle
Ich verwende dies, um die Benutzer zu sortieren, damit die zulässigen Hosts leichter zu erkennen sind:
quelle
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
quelle
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 esselect 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 verwendenuse mysql
wenn Sie verwendet hätten,select user from user;
als das könnte etwas gewesen sein, aber stattdessen verwenden Siemysql.user
, was die Verwendunguse mysql
am Anfang unnötig macht.Dies zeigt eine Liste eindeutiger Benutzer an:
quelle
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.
quelle
Ich fand seine nützlichere, da sie zusätzliche Informationen zu DML- und DDL-Berechtigungen enthält
quelle
Verwenden Sie die obige Abfrage, um MySQL-Benutzer zu erhalten
quelle