web-dev-qa-db-ja.com

MySQLでユーザーの権限を表示するにはどうすればよいですか?

次の簡単な方法でユーザーの権限を設定できることを知っています。

grant all on [database name].[table name] to [user name]@[Host name];

しかし、どうすれば既存の特権を確認できますか?

助成金で使用されているものと同様のデータが必要です。つまり、特定のユーザーが特定のホストから特定のデータベースの特定のテーブルに特定のアクセス権を持っていることを知りたいのです。

どうすれば入手できますか?

73
Roman

コマンド SHOW GRANTS [FOR user]はあなたが探しているものです。詳細は here を参照してください。

78
John Gardeniers

これが MySQLドキュメントSHOW GRANTS

SHOW GRANTS [FOR user]

このステートメントは、MySQLユーザーアカウントに付与される特権を複製するために発行する必要があるGRANTステートメントをリストします。アカウントは、GRANTステートメントと同じ形式を使用して名前が付けられます。たとえば、「jeffrey」@「localhost」です。アカウント名のユーザー名部分のみを指定した場合、「%」のホスト名部分が使用されます。アカウント名の指定に関する追加情報については、セクション12.5.1.3「GRANT構文」を参照してください。

mysql> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+

サーバーへの接続に使用しているアカウントに付与されている特権を一覧表示するには、次のいずれかのステートメントを使用できます。

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();

MySQL 5.0.24以降、SHOW GRANTS FOR CURRENT_USER(または同等の構文)がDEFINERコンテキスト(SQL SECURITY DEFINERで定義されたストアドプロシージャ内など)で使用される場合、表示される付与は定義者と付与者のものです。呼び出し側ではありません。

SHOW GRANTSは、指定されたアカウントに明示的に付与された特権のみを表示します。アカウントで他の特権を使用できる場合がありますが、それらは表示されません。たとえば、匿名アカウントが存在する場合、指定されたアカウントはその権限を使用できる可能性がありますが、SHOW GRANTSはそれらを表示しません。

SHOW GRANTSには、mysqlデータベースに対するSELECT権限が必要です。

55
radious