Wie kann ich Benutzerrechte in MySQL anzeigen?

69

Ich weiß, dass ich Benutzerrechte auf folgende einfache Weise festlegen kann:

grant all on [database name].[table name] to [user name]@[host name];

Aber wie kann ich vorhandene Privilegien sehen?

Ich muss Daten sehen, die denen ähneln, die bei der Gewährung verwendet werden. Mit anderen Worten möchte ich wissen, dass ein bestimmter Benutzer von einem bestimmten Host aus einen bestimmten Zugriff auf eine bestimmte Tabelle einer bestimmten Datenbank hat.

Wie kann ich es bekommen?

römisch
quelle

Antworten:

75

Der Befehl SHOW GRANTS [FOR user]ist das, wonach Sie suchen. Siehe hier für mehr Details.

John Gardeniers
quelle
51

Hier ist die MySQL-Dokumentation für SHOW GRANTS:

SHOW GRANTS [FOR user]

Diese Anweisung listet die GRANT-Anweisung oder -Anweisungen auf, die ausgegeben werden müssen, um die Berechtigungen zu duplizieren, die einem MySQL-Benutzerkonto gewährt werden. Der Name des Kontos entspricht dem Format der GRANT-Anweisung. Zum Beispiel 'jeffrey' @ 'localhost'. Wenn Sie nur den Benutzernamensanteil des Kontonamens angeben, wird ein Hostnamensanteil von '%' verwendet. Weitere Informationen zum Angeben von Kontonamen finden Sie in Abschnitt 12.5.1.3, „GRANT-Syntax“.

mysql> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+

Sie können eine der folgenden Anweisungen verwenden, um die Berechtigungen aufzulisten, die dem Konto gewährt wurden, mit dem Sie eine Verbindung zum Server herstellen:

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();

Wenn ab MySQL 5.0.24 SHOW GRANTS FOR CURRENT_USER (oder eine der äquivalenten Syntaxen) im DEFINER-Kontext verwendet wird, z nicht der Aufrufer.

SHOW GRANTS zeigt nur die Berechtigungen an, die dem angegebenen Konto explizit gewährt wurden. Andere Berechtigungen sind möglicherweise für das Konto verfügbar, werden jedoch nicht angezeigt. Wenn beispielsweise ein anonymes Konto vorhanden ist, kann das benannte Konto möglicherweise seine Berechtigungen verwenden, SHOW GRANTS zeigt sie jedoch nicht an.

SHOW GRANTS erfordert das SELECT-Privileg für die mysql-Datenbank.

strahlend
quelle
SHOW GRANTS requires the SELECT privilege for the mysql system database, except to display privileges and roles for the current user.
Sandip Bhattacharya