MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでユーザーに付与された権限(GRANTS)を確認する方法【SHOW GRANTS活用ガイド】

MySQLでは、特定のユーザーにどのような権限が付与されているかを確認したい場面がよくあります。そんなときに役立つのが SHOW GRANTS ステートメントです。この記事では、SHOW GRANTSの基本的な使い方から、実際の実行例までわかりやすく解説します。

SHOW GRANTSの基本構文

ユーザーの権限情報を表示するには、以下のように SHOW GRANTS FOR の後にユーザー名とホスト名を指定します。

SHOW GRANTS FOR 'yourUserName'@'yourHostName';

ユーザー名とホスト名を事前に確認する

Syntaxに含まれるユーザー名やホスト名がわからない場合は、まず mysql.user テーブルを参照して登録済みのユーザー一覧を取得しましょう。

mysql> select user,host from MySQL.user;

このクエリを実行すると、以下のような結果が得られます。

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| Bob              | %         |
| Charlie          | %         |
| Robert           | %         |
| User2            | %         |
| mysql.infoschema | %         |
| mysql.session    | %         |
| mysql.sys        | %         |
| root             | %         |
| @UserName@       | localhost |
| Adam Smith       | localhost |
| Chris            | localhost |
| David            | localhost |
| James            | localhost |
| John             | localhost |
| John Doe         | localhost |
| User1            | localhost |
| am               | localhost |
| hbstudent        | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
+------------------+-----------+
20 rows in set (0.00 sec)

特定ユーザーの権限を表示する実行例

ここでは、ユーザー「Robert」に対してSHOW GRANTSを実行してみます。ホストには任意のホストを意味する「%」を指定します。

mysql> SHOW GRANTS FOR 'Robert'@'%';

実行結果は次のとおりです。

+----------------------------------------------------------------------+
| Grants for Robert@%                                                  |
+----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `Robert`@`%`                                   |
| GRANT ALL PRIVILEGES ON `sample`.* TO `Robert`@`%` WITH GRANT OPTION |
| GRANT EXECUTE ON `web`.* TO `Robert`@`%`                             |
+----------------------------------------------------------------------+
3 rows in set (0.05 sec)

実行結果の見方

上記の出力からは、ユーザー「Robert」に対して以下の3つの権限が付与されていることが読み取れます。

  • GRANT USAGE ON *.*:すべてのデータベースに対する基本的な接続・ログイン権限
  • GRANT ALL PRIVILEGES ON `sample`.* WITH GRANT OPTION:「sample」データベース内の全オブジェクトに対する全権限に加え、他ユーザーへの権限譲渡も可能
  • GRANT EXECUTE ON `web`.*:「web」データベース内のストアドプロシージャや関数を実行できる権限

このようにSHOW GRANTSを使えば、MySQLがホスト「%」(任意のホスト)として解釈する対象を含め、特定ユーザーの権限情報を一覧形式で簡単に把握できます。セキュリティ監査や権限の見直しを行う際にもぜひ活用してください。

  1. 【MySQL入門】別のユーザーとしてログインする方法をわかりやすく解説

    MySQLで別のユーザーとしてログインしたい場合は、mysql -u ユーザー名 -p コマンドを使用します。この記事では、新しいユーザーの作成から、作成したユーザーでのログイン方法まで、手順を追って詳しく解説します。別のユーザーとしてログインするための基本構文別のユーザーとしてMySQLにログインする際の基本構文は以下の通りです。> mysql -u yourUsername -pEnter password:コマンドを実行してEnterキーを押すと、パスワードの入力を求められます。ここに該当ユーザーのパスワードを入力すればログインできます。ステップ1:新しいユーザーを作成するまずは、

  2. MySQLの「Access Denied for User 'root'@'localhost'」エラーを解決する方法

    MySQLは、SQL言語をベースとしたオープンソースのデータベース管理システムです。XAMPPコントロールパネルにも標準で同梱されており、誰でも無料で利用できることから、開発環境として広く普及しています。しかし近年、「ブラウザからMySQLデータベースにアクセスできない」「Access Denied for User root@localhost(ユーザーroot@localhostのアクセスが拒否されました)」というエラーが表示されるという報告が多数寄せられています。本記事では、この問題を最も簡単に解決する方法と、エラーが発生する原因について詳しく解説します。トラブルシューティング中にさらな