【SQL実践|実務向け】[DBA直伝] MariaDBにおけるユーザー管理の基礎:CREATE USER文をマスターする

導入

データベース管理において、ユーザー管理はセキュリティの根幹です。適切なアクセス権限を管理するためには、まず「誰が」「どこから」アクセスできるのかを正しく定義する必要があります。MariaDBで新規ユーザーを作成する際に必須となる「CREATE USER文」を正しく理解することは、最小権限の原則を守り、安全なデータベース運用を行うための第一歩です。

基礎知識

MariaDBにおけるユーザーは、単なるユーザー名だけではなく「ユーザー名」と「ホスト名」の組み合わせで一意に識別されます。
ユーザー名@ホスト名という形式が基本です。
例えば、’admin’@’localhost’ と ‘admin’@’192.168.1.10’ は、名前が同じでも別々のユーザーとして扱われます。これにより、「ローカルからのみ操作可能」「特定のIPアドレスからのみ接続可能」といった柔軟なアクセス制御が実現できます。

実装/解決策

基本的なユーザー作成は `CREATE USER` 文を使用します。現場では、誤って既存ユーザーを上書きしないよう、オプションを適切に組み合わせることが重要です。

・基本形: パスワードを指定して作成
・IF NOT EXISTS: ユーザーが存在しない場合のみ作成(エラー回避)
・OR REPLACE: 既存ユーザーを削除して再作成(設定のリセット時)

サンプルプログラム

以下のコードを参考に、目的に応じたユーザー作成を行ってください。

— 1. 最も一般的な作成方法(ローカル環境用)
CREATE USER ‘app_user’@’localhost’ IDENTIFIED BY ‘StrongPassword123!’;

— 2. 特定のIPアドレスからの接続を許可するユーザー作成
CREATE USER ‘remote_user’@’192.168.10.50’ IDENTIFIED BY ‘RemotePass456!’;

— 3. エラーを発生させずに、存在確認を行ってから作成する安全な方法
CREATE USER IF NOT EXISTS ‘backup_user’@’localhost’ IDENTIFIED BY ‘BackupPass789!’;

— 4. 既存ユーザーの設定を強制的に上書きして作成する(慎重に使用してください)
CREATE OR REPLACE USER ‘dev_user’@’%’ IDENTIFIED BY ‘DevPass000!’;

— 5. 作成したユーザーを確認する
SELECT user, host FROM mysql.user;

応用・注意点

現場で陥りやすいバグやトラブルを回避するために、以下の点に注意してください。

1. ホスト名のワイルドカード
‘%’ をホスト名に指定すると「すべてのホスト」から許可されます。利便性は高いですが、セキュリティリスクが高まるため、可能な限り具体的なIPアドレスやネットワーク範囲(例: 192.168.10.%)を指定してください。

2. 権限付与との分離
`CREATE USER` はあくまで「ユーザーの定義」を作成するだけです。この時点では、そのユーザーはどのデータベースにもアクセスできません。別途 `GRANT` 文を使用して、必要な権限(SELECT, INSERTなど)を付与する必要があります。

3. 誤操作の防止
`OR REPLACE` を使用すると、既存の権限設定が失われる可能性があります。本番環境でユーザーを更新する場合は、可能な限り `IF NOT EXISTS` を使い、既存設定を保護する運用をお勧めします。

適切なユーザー設計は、将来的なDBのメンテナンス性を大きく向上させます。ぜひ本日紹介したコマンドを検証環境で試してみてください。

コメント

タイトルとURLをコピーしました