Respostas:
Conecte-se à instância do mysql como um usuário administrador (geralmente como root) e dê o seguinte comando ...
select user from mysql.db where db='DB_NAME';
select user from mysql.db
sem qualificação retorna 2 linhas em branco também.
A resposta de user79644 fornece aos usuários privilégios no nível do banco de dados, mas sentirá falta dos usuários com apenas privilégios no nível da tabela, no nível da coluna ou no nível do procedimento. Para encontrar todos eles, use as seguintes instruções:
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';
Pelo menos no MySQL 5.5, parece que ter privilégios no nível da coluna implica que você possui privilégios no nível da tabela. Ter privilégios no nível da tabela não implica que você tenha privilégios no nível do banco de dados. Não tenho certeza sobre os privilégios no nível do procedimento.
ERROR 1046 (3D000): No database selected
mysql
banco de dados. É aí que todos os dados usados pelo MySQL são armazenados. Dê o comando USE mysql;
de adicionar o nome do banco de dados aos nomes da tabela, como FROM mysql.db
ouFROM 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;
Você deve ter em mente que o MySQLGRANT
para bancos de dados pode conter caracteres curinga . Isso deve ser levado em consideração usando LIKE
a consulta:
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';