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

MySQLで特定ユーザーの権限(GRANT)を確認する方法

MySQLで特定ユーザーの権限を確認する基本構文

MySQLにおいて、特定のユーザーに付与されている権限(GRANT)を確認したい場合は、SHOW GRANTSステートメントを使用します。基本的な構文は以下のとおりです。

SHOW GRANTS FOR 'ユーザー名'@'ホスト名';

この構文を実行すると、指定したユーザーに付与されているすべての権限の一覧を取得できます。権限の棚卸しやセキュリティ監査の際に非常に役立つコマンドです。

実際の使用例:ユーザー「JOHN」の権限を確認する

特定ユーザーの権限を確認するには、FOR句にユーザー名とホストを指定します。ここでは、ユーザー名が「JOHN」、ホストが「%(すべてのホストからの接続を許可)」である場合を例に説明します。

以下のクエリを実行することで、ユーザー「JOHN」に付与された権限を取得できます。

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

実行結果の出力例

上記のクエリを実行すると、次のような結果が出力されます。

+---------------------------------------------------------------------------------------------------------------------------
| Grants for JOHN@%                                                                                                          |
+---------------------------------------------------------------------------------------------------------------------------
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN,
PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE
TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION
CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE
USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO
`JOHN`@`%` WITH GRANT OPTION |
| GRANT
BACKUP_ADMIN,BINLOG_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SET_USER_ID,SYSTEM_VARIABLES_ADMIN,XA_RECOVER_ADMIN ON *.* TO `JOHN`@`%`
WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------------------
2 rows in set (0.00 sec)

出力結果の読み方のポイント

この出力から、ユーザー「JOHN@%」には以下のような権限が付与されていることがわかります。

  • グローバル権限(*.*):SELECT、INSERT、UPDATE、DELETE、CREATE、DROP など、すべてのデータベース・テーブルに対する主要な操作権限一式
  • 動的権限(MySQL 8.0以降):BACKUP_ADMIN、BINLOG_ADMIN、CONNECTION_ADMIN など、バックアップやレプリケーションといった管理操作に関わる権限
  • WITH GRANT OPTION:自分が保持する権限を他のユーザーへ付与できる特別な権限も持っている

*.* は「全データベース・全テーブル」を意味するため、このユーザーはサーバー全体に影響を与える強力な権限を持っていることになります。運用環境では、不要な権限が付与されていないかを定期的に SHOW GRANTS で確認し、最小権限の原則に沿った設定を見直すことをおすすめします。

  1. MySQLで特定ユーザーのログイン時刻を更新する方法をわかりやすく解説

    MySQLで特定のユーザーのログイン時刻を更新したい場合は、UPDATE文にORDER BYとLIMITを組み合わせると便利です。この記事では、実際のサンプルコードと実行結果をもとに、手順を詳しく解説します。1. サンプルテーブルを作成するまず、ユーザーID・ログイン時刻・ユーザー名の3つのカラムを持つテーブルを作成します。mysql> create table DemoTable1911 ( UserId int, UserLoggedInTime time, UserName varchar(20) ); Query OK, 0 rows af

  2. MySQLでユーザーを作成して権限を付与する方法|CREATE USERとGRANT文の使い方

    MySQLでは、CREATE USER文で新しいユーザーを作成し、GRANT文を使ってデータベースへのアクセス権限を付与できます。本記事では、ユーザー作成から各種権限(SELECT・INSERT・UPDATE・DELETE・EXECUTE)の付与、そして付与された権限の確認方法まで、具体的なコード例とともにわかりやすく解説します。 ユーザー作成と権限付与の基本構文 まずは、データベースの作成、ユーザーの作成、そして権限付与までの一連の流れを示す基本構文です。 create database yourDatabaseName DEFAULT CHARACTER SET utf8; creat