database-mysql-user-grant

MySQL におけるユーザー登録とアクセス権限の付与は、データベースのセキュリティと管理にとって非常に重要です。以下に、基本的な手順とその解説をします。


目次

🔑 ユーザー登録とアクセス権限の流れ

  1. ユーザー作成
  2. 権限の付与(GRANT)
  3. 変更の反映(FLUSH PRIVILEGES)※MySQL 8.0 以降は不要なことが多い
  4. 権限の確認
  5. ユーザー削除(必要に応じて)

🧑‍💻 1. ユーザーの作成

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

🔍 各項目の意味

  • 'username':作成したいユーザー名
  • 'host':アクセス元('localhost'%(任意のホスト))
  • 'password':ログイン用のパスワード

例:

CREATE USER 'user1'@'localhost' IDENTIFIED BY 'securepass';

✅ 2. 権限の付与

GRANT 権限一覧 ON データベース名.テーブル名 TO 'username'@'host';

権限の種類(一部)

権限説明
ALL PRIVILEGESすべての操作が可能
SELECTデータの読み取り
INSERTデータの追加
UPDATEデータの更新
DELETEデータの削除
CREATEテーブルなどの作成
DROPテーブルなどの削除

例:

GRANT SELECT, INSERT, UPDATE ON sample_db.* TO 'user1'@'localhost';

これは、sample_db データベース内のすべてのテーブルに対して、user1 に「読み取り・追加・更新」の権限を付与する例です。


🔁 3. 権限の反映(MySQL 5.x系で必要)

FLUSH PRIVILEGES;

MySQL 8.0 以降は、CREATE USERGRANT 実行時に自動で反映されるため、通常は不要です。


🔎 4. 権限の確認

SHOW GRANTS FOR 'user1'@'localhost';

❌ 5. ユーザーの削除(不要になった場合)

DROP USER 'user1'@'localhost';

💡 補足:ホストの指定

  • 'user1'@'localhost':ローカルからのみログイン可能
  • 'user1'@'%':すべてのホストからの接続を許可
  • 'user1'@'192.168.1.%':特定のネットワークからのみ許可

📌 まとめ

操作コマンド例
ユーザー作成CREATE USER 'user'@'localhost' IDENTIFIED BY 'pass';
権限付与GRANT SELECT ON db.* TO 'user'@'localhost';
権限確認SHOW GRANTS FOR 'user'@'localhost';
ユーザー削除DROP USER 'user'@'localhost';

必要なら、具体的なユースケースやセキュリティのベストプラクティス(例えば最小権限の原則など)についても説明できます。興味ありますか?

よかったらシェアしてね!
目次