Как я могу узнать, какие пользователи 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 имеют доступ к этой базе данных и какие у них есть привилегии? В принципе, как я могу получить приведенную выше диаграмму из командной строки?
Вы можете добавить \ G к команде, чтобы результаты отображались в виде сетки
SELECT * FROM mysql.db WHERE Db = '<database name in LC>'\G;
SELECT * FROM mysql.db WHERE Db = '<database name in LC>';
Вы можете попробовать это, должно обеспечить лучшую читаемость:
select db 'DATABASE', host HOST, user USER from mysql.db where db = '<databasename>';
Что-нибудь более запоминающееся для cli:
select db,host,user from mysql.db;