Wie "show databases", die gehören zu einem bestimmten Benutzer in MySQL?
"show databases" zeigt alle Datenbanken, in denen Sie (angemeldeter Benutzer) haben einige Privilegien.
Gibt es eine Möglichkeit zu zeigen, dass alle Datenbanken, die wo-user "xxx" hat einige Rechte?
Bearbeiten:
Ich habe einen Benutzer "mickey":
mysql> show grants for mickey;
+-------------------------------------------------------------------------------------------------------+
| Grants for mickey@% |
+-------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'mickey'@'%' IDENTIFIED BY PASSWORD '*B9E506CBC9D7D8352A3C02DBC94677A5DEF491B8' |
| GRANT ALL PRIVILEGES ON `mickey\_%`.* TO 'mickey'@'%' |
+-------------------------------------------------------------------------------------------------------+
Benutzer mickey darf, erstellen/löschen von Datenbanken und Tabellen mit dem Namen "mickey_%". Das herausfiltern dieser Datenbanken ist einfach, aber nur, weil seine Datenbanken haben den Präfix "mickey_".
es ist eine Datenbanken namens "mickey_example2", wo mickey hat alle Privilegien. Ich bin nicht in der Lage zu finden diese Datenbank information_schema oder mysql db.
- Und dies ist die einzige information, die über 'mickey' in information_schema.USER_PRIVILEGES:
mysql> SELECT * FROM information_schema.USER_PRIVILEGES WHERE GRANTEE LIKE '%mickey%';
+--------------+---------------+----------------+--------------+
| GRANTEE | TABLE_CATALOG | PRIVILEGE_TYPE | IS_GRANTABLE |
+--------------+---------------+----------------+--------------+
| 'mickey'@'%' | def | USAGE | NO |
+--------------+---------------+----------------+--------------+
MySql-Handbuch sagt:
MySQL implementiert Datenbanken als Verzeichnisse im data-Verzeichnis, also
diese Anweisung listet einfach nur die Verzeichnisse in diesem Verzeichnis aus. Jedoch, die
die Ausgabe kann auch die Namen der Verzeichnisse, die dem nicht entsprechen
aktuelle Datenbanken.
was für mich bedeutet, dass es nicht um beliebige Informationen (über die bestehenden Datenbanken) verfügbar in information_schema, vor allem, wenn die Datenbank leer ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach viel suchen und Lesen fand ich heraus, dass es ist keine schöne und saubere Art und Weise zu finden, "show databases" für andere Benutzer.
Habe ich meine geänderte db-design by doing folgende:
- jede Datenbank-name beginnt mit $username_
- $username nicht enthalten underline "_"
und ich habe ein Benutzer ohne Zuschüsse außer "SHOW DATABASES" und ich fand Benutzers Datenbanken mit DENEN WIE mit SHOW DATABASES Befehl:
und ? wird ersetzt mit:
Können Sie die Berechtigungen für einen bestimmten Benutzer Abfragen der Tabelle USER_PRIVILEGES from "information_schema".
Zum Beispiel, um zu testen, "ERSTELLEN von Berechtigungen für einen Benutzer namens "root", man könnte-Abfrage:
Dies wird zeigen Sie Ihre host -, Datenbank-Namen und den entsprechenden Benutzer alles in einem