MySQLでユーザーの権限(特権)を確認する方法|SHOW GRANTSコマンドの使い方
MySQLでは、SHOWコマンドにGRANTSを組み合わせることで、ユーザーに付与されている権限(特権)を簡単に確認できます。この記事では、基本的な確認方法から、特定ユーザーの権限を調べる方法まで、実際の実行例とあわせて解説します。
現在のユーザーの権限を確認する基本構文
ログイン中のユーザー(rootなど)が持つ権限を確認するには、以下の構文を使用します。
SHOW GRANTS;
この構文を実行すると、現在接続しているユーザー(root)に対して付与されているすべての権限が表示されます。
特定のユーザーの権限を確認する構文
特定のユーザーの権限を確認したい場合は、FOR句を使ってユーザー名とホスト名を指定します。
SHOW GRANTS FOR 'ユーザー名'@'ホスト名';
これにより、指定したユーザーに付与された権限の一覧を取得できます。
実行例1:rootユーザーの権限を確認する
まずは基本構文を実行してみましょう。以下のクエリを実行します。
mysql> SHOW GRANTS;
実行すると、rootユーザーの権限が以下のように表示されます。
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Grants for root@% | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 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 `root`@`%` 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 `root`@`%` | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.08 sec)
rootユーザーには、データベース全体(*.*)に対するSELECTやINSERT、CREATE USERなど、ほぼすべての強力な権限が付与されていることがわかります。
実行例2:特定のユーザー「Bob」の権限を確認する
次に、特定のユーザーの権限を確認する例を見てみましょう。ここでは、ユーザー名が「Bob」、ホストが「%」(任意のホストからの接続を許可)であるユーザーを想定します。
以下のクエリを実行することで、ユーザー「Bob」の権限を取得できます。
mysql> SHOW GRANTS FOR 'Bob'@'%';
実行結果は以下の通りです。
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Grants for Bob@% | +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 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 `Bob`@`%` 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 `Bob`@`%` WITH GRANT OPTION | +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)
まとめ
MySQLでユーザーの権限を確認するには、SHOW GRANTS;コマンドを使用します。自分自身の権限を確認する場合はそのまま実行し、他のユーザーの権限を調べたい場合はFOR 'ユーザー名'@'ホスト名'を付けて実行します。セキュリティ管理やトラブルシューティングの際に役立つ基本コマンドなので、ぜひ覚えておきましょう。
-
MySQLで現在選択中のデータベースを確認する方法|DATABASE()関数とstatusコマンドの使い方
MySQLに接続している際、「今どのデータベースを選択しているのか」を確認したい場面はよくあります。この記事では、DATABASE()関数やstatusコマンドを使って、現在選択中のデータベース名を簡単に確認する方法を解説します。 DATABASE()関数で選択中のデータベースを確認する MySQLでは、DUALテーブルに対してDATABASE()関数を実行することで、現在選択されているデータベース名を取得できます。 手順1:データベースを選択する まず、例として「business」というデータベースを選択してみましょう。以下のコマンドを実行します。 mysql> use busi
-
MySQLでシーケンスを作成する方法|AUTO_INCREMENTの使い方とルールを解説
MySQLにおけるシーケンスとは?MySQLにおける「シーケンス」とは、1(指定した場合は0)から始まり、昇順で自動生成される整数の連番のことです。多くのアプリケーションでは、レコードを一意に識別するための番号を発行する目的でシーケンスが利用されています。具体例代表的な例としては、CRMシステムの顧客ID、人事管理システムの社員番号、設備管理システムの機器番号などが挙げられます。MySQLでシーケンスを自動的に作成するには、対象のカラムにAUTO_INCREMENT属性を設定します。通常は、主キー(PRIMARY KEY)カラムに対して適用するのが一般的です。AUTO_INCREMENTを使用