Antworten:
Stellen Sie als Administrator (in der Regel als root) eine Verbindung zur mysql-Instanz her und geben Sie den folgenden Befehl ein ...
select user from mysql.db where db='DB_NAME';
select user from mysql.db
ohne Qualifikation gibt ebenfalls 2 leere Zeilen zurück.
Die Antwort von user79644 ruft die Benutzer mit Berechtigungen auf Datenbankebene ab, vermisst jedoch Benutzer mit Berechtigungen auf Tabellen-, Spalten- oder Prozedurebene. Verwenden Sie die folgenden Anweisungen, um alle zu finden:
SELECT user,host FROM db WHERE db='name';
SELECT user,host FROM tables_priv WHERE db='name';
SELECT user,host FROM columns_priv WHERE db='name';
SELECT user,host FROM procs_priv WHERE db='name';
Zumindest in MySQL 5.5 scheint es so zu sein, als würden Sie mit Berechtigungen auf Spaltenebene über Berechtigungen auf Tabellenebene verfügen. Wenn Sie über Berechtigungen auf Tabellenebene verfügen, bedeutet dies nicht, dass Sie über Berechtigungen auf Datenbankebene verfügen. Nicht sicher über Berechtigungen auf Prozedurebene.
ERROR 1046 (3D000): No database selected
mysql
Datenbank verwenden sollten. Dort werden alle von MySQL verwendeten Daten gespeichert. Entweder geben Sie den Befehl USE mysql;
von den Datenbanknamen der Tabellennamen hinzufügen, wie FROM mysql.db
oderFROM mysql.tables_priv
# current users that access the db
mysql> show processlist;
+-----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+-----------+------+---------+------+-------+------------------+
| 214 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+-----+------+-----------+------+---------+------+-------+------------------+
# who can access what at anytime and his privilege level
mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
# what privileges are available
mysql> show privileges;
Beachten Sie, dass MySQLGRANT
für Datenbanken Platzhalterzeichen enthalten kann . Dies muss berücksichtigt werden, indem LIKE
in der Abfrage verwendet wird:
SELECT user,host FROM db WHERE 'name' LIKE db;
SELECT user,host FROM tables_priv WHERE db='name';
SELECT user,host FROM columns_priv WHERE db='name';
SELECT user,host FROM procs_priv WHERE db='name';