Welche MySQL-Benutzer haben Zugriff auf eine Datenbank?

13

Wie kann ich feststellen, welche MySQL-Benutzer Zugriff auf eine Datenbank haben und welche Berechtigungen sie haben?

Ich scheine in der Lage zu sein, diese Informationen von phpMyAdmin zu erhalten, wenn ich auf "Privilegien" klicke. . .

                 Users having access to "mydatabase"
User     Host       Type               Privileges              Grant
myuser1  %          database-specific  ALL PRIVILEGES          Yes
root     localhost  global             ALL PRIVILEGES          Yes
myuser2  %          database-specific  SELECT, INSERT, UPDATE  No

. . . aber ich möchte wissen, wie man diese Abfrage über die Befehlszeile ausführt.

(phpMyAdmin zeigt mir oft die SQL-Syntax des Befehls an, den es ausführt, aber ich sehe es in diesem Fall nicht.)

Bitte beachten Sie, dass ich nicht nach den Berechtigungen eines bestimmten Benutzers frage (z. B. "SHOW GRANTS for myuser1"), sondern anhand des Namens einer Datenbank, wie ich feststelle, welche MySQL-Benutzer Zugriff auf diese Datenbank haben und welche Berechtigungen sie haben ? Wie kann ich das obige Diagramm über die Befehlszeile abrufen?

Philip Durbin
quelle

Antworten:

16

Sie können \ G an den Befehl anhängen, um die Ergebnisse im Raster anzuzeigen

SELECT * FROM mysql.db WHERE Db = '<database name in LC>'\G;
Graham
quelle
4
+1 für \ G nicht gesehen, dass vor
jx12345
8
SELECT * FROM mysql.db WHERE Db = '<database name in LC>';
K. Brian Kelley
quelle
Vielen Dank. Diese Antwort scheint die gleichen Rohdaten wie das Diagramm in der Frage auszugeben. . . aber in einem weniger lesbaren Format. Ich denke, die Darstellung der Daten im selben Format ist eine Übung für den Leser. . . ;)
Philip Durbin
2

Probieren Sie es aus, um die beste Lesbarkeit zu erzielen:

select db 'DATABASE', host HOST, user USER from mysql.db where db = '<databasename>';

Noch einprägsamer für den Kunden:

select db,host,user from mysql.db;
sjas
quelle