2026年5月19日

2026年5月19日

MySQLのユーザー権限を設定する方法(GRANT/REVOKE)

はじめに

MySQLデータベース管理において、ユーザーが特定の権限を持つことが重要です。適切なアクセス制御はシステム全体のセキュリティを確保し、管理者は重要な情報を保護することができます。この記事では、GRANTとREVOKEコマンドを使用してユーザーの権限を設定する方法について説明します。

症状・背景

MySQLユーザーに適切なアクセス制御が必要になる主な場面:

  • ユーザーが特定のデータベースやテーブルに対して読み取り専用アクセスを持つべき場合
  • 新しいユーザーアカウントを作成し、そのアカウントに必要な権限を与える必要がある場合
  • 既存のユーザーの権限を削減または変更する必要がある場合
  • システムのセキュリティポリシーにより特定のアクセス権限が必要となる場合

手順・設定方法

ステップ1: ユーザーを作成し、基本的なアクセス権限を付与する

# 新しいユーザーを作成します。'username'はユーザー名、'password'はパスワードです。
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

# 新しく作成したユーザーに特定のデータベースへの読み取り専用アクセスを付与します。
GRANT SELECT ON database_name.* TO 'username'@'localhost';

ステップ2: より詳細な権限設定とリモート接続許可

# 新しいユーザーに特定のデータベースへのフルアクセス(SELECT, INSERT, UPDATE, DELETE)を付与します。
GRANT SELECT,INSERT,UPDATE,DELETE ON database_name.* TO 'username'@'localhost';

# ユーザーがリモートマシンから接続できるように許可します。
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'%';

ステップ3: 特定のテーブルに対する制限付きアクセスを設定

# 新しいユーザーに特定のデータベース内の特定のテーブルへの読み取り専用アクセスを付与します。
GRANT SELECT ON database_name.table_name TO 'username'@'localhost';

# ユーザーが指定されたテーブルに対するINSERTとDELETE権限を持つように設定します。
GRANT INSERT, DELETE ON database_name.table_name TO 'username'@'%';

ステップ4: 権限を削除または変更する

# 特定のユーザーの全権限を取り消します。
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'username'@'localhost';

# より具体的な権限の取り消し(例:SELECT権限)
REVOKE SELECT ON database_name.* FROM 'username'@'%';

注意事項

  • 実際のユーザー名とパスワードを設定する際には、適切にマネージメントツールやセキュリティポリシーに従ってください。
  • GRANTとREVOKEを使用する前に、既存のユーザー権限を確認することをお勧めします。これにより、意図しないアクセスが許可されることを防ぐことができます。
  • セキュリティ上の注意点: リモートマシンから接続できるようにするには「%」を使用しますが、これは最も安全な設定ではありません。特定のIPアドレスまたはホスト名に制限を設けることを強く推奨します。
  • パフォーマンス/運用上の注意: ユーザー権限の管理は頻繁に行われるべきではありません。適切な初期設定を行い、その後変更が少ないようにすることが重要です。

まとめ

1. GRANTコマンドを使用して新しいユーザーに必要なアクセス権を付与できます。

2. REVOKEコマンドを使用すると、既存のユーザーから不要になったアクセス権を取り消すことができます。

3. '%*'と'@localhost' の違いを理解し、適切な接続設定を選択します。

4. ユーザーに必要以上の権限を与えないように注意してください。最小限の権限で運用することがセキュリティ上重要です。

5. 定期的にユーザー権限とアクセス制御リストをレビューし、適切なセキュリティポリシーに従って更新を行います。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ