はじめに
この記事では、MySQLでユーザーを作成し、権限を付与する方法 について、SQL文を検証しながら解説します。
これからSQLの基礎を学びたい方や、簡単に環境を構築して気軽に試したい方に向けた内容です。
また、本記事は個人的な備忘録としてまとめたものです。その点をご理解いただければ幸いです。
書こうと思ったきっかけ
私は、テーブル設計やSQLについて、技術書を読んで体系的に学んだわけではありません。
とにかく手を動かし、試行錯誤しながら基礎を身につけてきました。
この経験を踏まえ、今回は SQLの基本を整理し、体系的に振り返りながら 記事としてアウトプットしていきます。
事前準備
手軽にSQL文を試す方法として、今回は Docker Hub を活用し、SQLコマンドの技術検証を行います。
📌 詳しい手順については、過去の記事にまとめていますので、こちらを参考にしてください。
また、本記事では 事前にデータベースが作成されていることを前提 に進めていきます。まだデータベースを作成していない方は、以下の記事を参考にしてください。
実際にやってみた
MySQLでは、データベースに新しいユーザーを作成し、特定の権限を付与 することができます。
ユーザーを作成する
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password123';
実行結果
mysql> CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password123';
Query OK, 0 rows affected (0.02 sec)
解説
-
'new_user'@'localhost'→new_userというユーザーを ローカル接続(localhost) 用に作成。 -
'password123'→new_userのパスワードを設定(任意の強力なパスワードに変更してください)。
リモート接続を許可したい場合
'localhost' の部分を '%' に変更すると、どこからでもアクセス可能になります。
CREATE USER 'new_user'@'%' IDENTIFIED BY 'password123';
ユーザーに権限を付与する
GRANT ALL PRIVILEGES ON my_database.* TO 'new_user'@'localhost';
解説
-
ALL PRIVILEGES→new_userに すべての権限 を付与。 -
my_database.*→my_database内の すべてのテーブル に適用。 -
'new_user'@'localhost'→new_userに対して ローカル接続 で適用。
特定の権限だけを付与したい場合
GRANT SELECT, INSERT, UPDATE, DELETE ON my_database.* TO 'new_user'@'localhost';
このSQLでは、データの 参照(SELECT)、追加(INSERT)、更新(UPDATE)、削除(DELETE) のみを許可しています。
権限を適用する
MySQLの権限を即時適用するには、以下を実行します。
FLUSH PRIVILEGES;
実行結果
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected, 1 warning (0.01 sec)
付与した権限を確認する
SHOW GRANTS FOR 'new_user'@'localhost';
実行結果
mysql> SHOW GRANTS FOR 'new_user'@'localhost';
+----------------------------------------------+
| Grants for new_user@localhost |
+----------------------------------------------+
| GRANT USAGE ON *.* TO `new_user`@`localhost` |
+----------------------------------------------+
1 row in set (0.00 sec)
ユーザーを削除する
作成したユーザーを削除する場合は、以下のSQLを実行します。
DROP USER 'new_user'@'localhost';
実行結果
mysql> DROP USER 'new_user'@'localhost';
Query OK, 0 rows affected (0.01 sec)
アカウントが削除されたため、ログインできないことを確認できます。
➜ ~ docker exec -it my-mysql mysql -u new_user -p
Enter password:
ERROR 1045 (28000): Access denied for user 'new_user'@'localhost' (using password: YES)
コマンド一覧
| コマンド | 説明 |
|---|---|
CREATE USER 'user'@'host' IDENTIFIED BY 'password'; |
ユーザーの作成 |
GRANT 権限 ON データベース.* TO 'user'@'host'; |
権限を付与 |
FLUSH PRIVILEGES; |
権限の適用 |
SHOW GRANTS FOR 'user'@'host'; |
付与された権限を確認 |
DROP USER 'user'@'host'; |
ユーザーの削除 |
まとめ
本記事では、MySQLでユーザーを作成し、権限を付与する方法 について紹介しました。
SQLを学ぶ上で、ユーザー作成やアカウント権限の管理を正しく理解し、適切に使い分けることが重要です。
今後も、基本的なSQLの知識をしっかりと定着 させていきたいと思います。