回答:
管理ユーザー(通常はroot)としてmysqlインスタンスに接続し、次のコマンドを入力します...
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;
あなたは、心の中で負担する必要がMySQLのGRANT
データベースのために含めることができるワイルドカード文字を。これは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';