MySQLでデータベースを作成する前にユーザー権限を確認する方法
MySQLでは、データベースを作成する前に、そのユーザーに十分な権限(CREATE権限など)が付与されているかどうかを事前に確認しておくことが重要です。権限を確認するには SHOW GRANTS ステートメントを使用します。
ユーザー権限を表示する基本構文
特定のユーザーに付与されている権限を表示するには、以下の構文を使用します。
SHOW GRANTS FOR ユーザー名;
この構文を使って、データベースを作成する前にユーザーの権限を確認する手順を、ケース別に見ていきましょう。
ケース1:現在のユーザー(root)の権限を確認する場合
現在ログインしているユーザー自身の権限を確認するには、current_user を指定します。以下がその構文です。
mysql> SHOW GRANTS FOR current_user;
実行すると、以下のような出力が得られます。
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 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.00 sec)
rootユーザーの場合、SELECT・INSERT・UPDATE・DELETE・CREATE・DROPなど、ほぼすべての権限が付与されていることがわかります。「CREATE」権限が含まれているため、データベースの作成も可能です。
ケース2:他のユーザーの権限を確認する場合
自分以外の特定のユーザーの権限を確認したい場合は、対象のユーザー名を指定してクエリを実行します。以下は「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)
まとめ
データベースの作成操作を行う前に SHOW GRANTS ステートメントでユーザー権限を確認しておけば、「ACCESS DENIED」などの権限エラーを未然に防ぐことができます。現在のユーザーなら CURRENT_USER、他のユーザーならユーザー名を指定することで、付与されている権限の一覧を簡単にチェックできます。もし必要な権限(特にCREATE権限)が付与されていない場合は、rootユーザーや管理者にGRANT文による権限付与を依頼しましょう。
-
MySQL Workbenchで新しいデータベースを作成する方法
MySQL Workbenchを使って新しいデータベースを作成するには、まずMySQL Workbenchを起動する必要があります。以下は起動画面のスクリーンショットです。MySQLへの接続を確認する次に、MySQLとの接続をテストしてみましょう。以下の手順に従ってください。Database -> Connect to Database(Ctrl + U)すると、「Connect to Database(データベースに接続)」ダイアログボックスが表示されます。続行するにはパスワードを入力してください。その後、OKボタンを2回押すと接続が確立されます。データベースの作成手順接続が完了したら
-
MySQLコマンドラインでデータベースを作成する方法を初心者向けに解説
MySQLコマンドラインでデータベースを作成する手順 この記事では、WindowsのコマンドプロンプトからMySQLに接続し、データベースを作成する一連の手順をスクリーンショット付きで解説します。初心者の方でも迷わず進められるよう、順番に見ていきましょう。 1. コマンドプロンプトを開く まず、コマンドプロンプトを起動します。キーボードのショートカット「Windows + R」キーを押すと、「ファイル名を指定して実行」ダイアログが表示されます。 2. 「CMD」と入力してOKをクリック 表示された入力欄に CMD と入力し、「OK」ボタンをクリックしてください。 3. コマンドプロンプトが