Какие пользователи MySQL имеют доступ к базе данных?

13

Как я могу сказать, какие пользователи MySQL имеют доступ к базе данных и какие привилегии они имеют?

Кажется, я могу получить эту информацию от phpMyAdmin, когда нажимаю «Привилегии». , ,

                 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

, , , но я хотел бы знать, как выполнить этот запрос из командной строки.

(phpMyAdmin часто показывает мне синтаксис SQL команды, которую он выполняет, но я не вижу его в этом случае.)

Пожалуйста, обратите внимание, что я не спрашиваю, что дает конкретный пользователь (например, «ПОКАЗАТЬ ГРАНТЫ для myuser1»), а скорее, учитывая имя базы данных, как определить, какие пользователи MySQL имеют доступ к этой базе данных и какие привилегии они имеют ? Как я могу получить приведенный выше график из командной строки?

Филипп Дурбин
источник

Ответы:

16

Вы можете добавить \ G к команде, чтобы результаты отображались в 'сетке'. Вид

SELECT * FROM mysql.db WHERE Db = '<database name in LC>'\G;
Грэхем
источник
4
+1 за \ G не видел этого раньше
jx12345
8
SELECT * FROM mysql.db WHERE Db = '<database name in LC>';
К. Брайан Келли
источник
Благодарю. Этот ответ, похоже, выдает те же исходные данные, что и диаграмма в вопросе. , , но в менее читаемом формате. Я предполагаю, что представление данных в том же формате - упражнение для читателя. , , ;)
Филипп Дурбин
2

Вы могли бы попробовать это, должно обеспечить лучшую читаемость:

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

Нечто более запоминающееся для клиента:

select db,host,user from mysql.db;
sjas
источник