Risposte:
Connettiti all'istanza mysql come utente amministratore (generalmente come root) e dai il seguente comando ...
select user from mysql.db where db='DB_NAME';
select user from mysql.db
senza qualifica restituisce anche 2 righe vuote.
La risposta di user79644 ottiene agli utenti i privilegi a livello di database ma mancherà agli utenti solo privilegi a livello di tabella, a livello di colonna o a livello di procedura. Per trovarli tutti, utilizzare le seguenti dichiarazioni:
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';
Almeno in MySQL 5.5, sembra che avere privilegi a livello di colonna implichi che si disponga di privilegi a livello di tabella. Avere i privilegi a livello di tabella non implica che si disponga di privilegi a livello di database. Non sono sicuro dei privilegi a livello di procedura.
ERROR 1046 (3D000): No database selected
mysql
database. Ecco dove sono archiviati tutti i dati utilizzati da MySQL. O dare il comando USE mysql;
di aggiungere il nome del database ai nomi delle tabelle, come FROM mysql.db
oFROM 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;
Devi tenere presente che MySQLGRANT
per i database può contenere caratteri jolly . Questo deve essere preso in considerazione usando LIKE
nella query:
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';