0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

個人的な備忘録:MySQLでユーザーを作成し、権限を付与する方法について記事としてアウトプットしてみた

0
Last updated at Posted at 2025-01-30

はじめに

この記事では、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 PRIVILEGESnew_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の知識をしっかりと定着 させていきたいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?