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


69

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

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

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

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

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

回答:



51

ここにある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(または同等の構文のいずれか)が、SQL SECURITY DEFINERで定義されたストアドプロシージャ内などのDEFINERコンテキストで使用されている場合、表示される権限は定義者の権限と呼び出し側ではありません。

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

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


SHOW GRANTS requires the SELECT privilege for the mysql system database, except to display privileges and roles for the current user.
サンディップバタチャリャ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.