Ответы:
Подключитесь к экземпляру mysql от имени пользователя-администратора (как правило, от имени пользователя root) и введите следующую команду ...
select user from mysql.db where db='DB_NAME';
select user from mysql.db
без квалификации также возвращает 2 пустых строки.
Ответ user79644 получает пользователей с привилегиями уровня базы данных, но будет пропускать пользователей с привилегиями только уровня таблицы, уровня столбца или уровня процедуры. Чтобы найти все из них, используйте следующие утверждения:
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';
По крайней мере, в MySQL 5.5 кажется, что наличие привилегий на уровне столбцов означает, что у вас есть привилегии на уровне таблиц. Наличие привилегий на уровне таблицы не означает, что у вас есть привилегии на уровне базы данных. Не уверен насчет привилегий на уровне процедур.
ERROR 1046 (3D000): No database selected
mysql
базу данных. Вот где хранятся все данные, используемые MySQL. Либо дайте команду USE mysql;
добавления имени базы данных в имена таблиц, например, FROM mysql.db
илиFROM 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;
Вы должны иметь в виду, что MySQLGRANT
для баз данных может содержать символы подстановки . Это должно быть учтено с помощью LIKE
в запросе:
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';