4.

MySQL/MariaDBのユーザー関連

編集

本稿は MariaDB / MySQL のユーザー関連 SQL に関する記事です。データベースユーザの作成・確認・変更・削除・権限付与といった、ユーザ管理の操作をまとめます。

子ページから項目を選択してください。

本ページの子ページ

ユーザー関連 SQL の早見表

操作SQL
ユーザ一覧SELECT user, host FROM mysql.user;
ユーザ作成CREATE USER 'app'@'%' IDENTIFIED BY '********';
名前変更RENAME USER 'old'@'%' TO 'new'@'%';
パスワード変更ALTER USER 'app'@'%' IDENTIFIED BY '********';
削除DROP USER 'app'@'%';
権限付与GRANT SELECT, INSERT, UPDATE, DELETE ON myapp.* TO 'app'@'%';
権限取消REVOKE INSERT ON myapp.* FROM 'app'@'%';
権限確認SHOW GRANTS FOR 'app'@'%';
反映FLUSH PRIVILEGES;

ユーザー名と host 部分の意味

MySQL / MariaDB のユーザは 'user'@'host'ペアで識別されます。同じ user 名でも host 部分が違えば別のユーザ扱いで、別々の権限・パスワードを持てます。

host 指定意味
'localhost'UNIXドメインソケット (同一マシン)
'127.0.0.1'TCP loopback
'%'すべてのホスト (DB ネットワーク到達可能なら誰でも)
'10.0.0.%'サブネット指定
'web01.example.com'特定の FQDN (DNSが信用できる前提)

権限の階層

階層
グローバル (すべての DB)GRANT ALL ON *.* TO 'u'@'%';
データベース単位GRANT SELECT ON myapp.* TO 'u'@'%';
テーブル単位GRANT SELECT ON myapp.users TO 'u'@'%';
カラム単位GRANT SELECT (id, name) ON myapp.users TO 'u'@'%';
ルーチンGRANT EXECUTE ON PROCEDURE myapp.p TO 'u'@'%';

代表的な権限

権限用途
SELECT参照
INSERT / UPDATE / DELETEデータ更新
CREATE / ALTER / DROPDDL
INDEXインデックス管理
EXECUTEストアド呼出
CREATE USERユーザ管理
RELOADFLUSH 実行
REPLICATION CLIENT / SLAVEレプリ管理
ALL PRIVILEGES全権限 (本番では避ける)
GRANT OPTION他人へ権限を付与する権限

典型的なアプリ用ユーザの作成

-- 1. ユーザ作成
CREATE USER 'app'@'%' IDENTIFIED BY 'StrongPass!2026';

-- 2. 必要最小限の権限を付与
GRANT SELECT, INSERT, UPDATE, DELETE ON myapp.* TO 'app'@'%';

-- 3. 確認
SHOW GRANTS FOR 'app'@'%';

-- 4. 反映 (CREATE USER / GRANT 後は自動反映だが、念のため)
FLUSH PRIVILEGES;

パスワードに関する近年の変更

  • MySQL 8.0 から既定の認証プラグインが caching_sha2_password に変更
  • 古いクライアント / レガシーアプリは接続失敗することがある。必要なら mysql_native_password を明示
  • パスワードは平文では一切残らない (ハッシュ化されて保管)
  • 有効期限 (PASSWORD EXPIRE)・履歴・複雑度ポリシーが設定可能

運用上の注意

  • 本番アプリ用ユーザに GRANT OPTIONALL PRIVILEGES を渡さない
  • 同じ user 名でも host 違いで権限が別。意図しない権限漏れがないかチェック
  • % の host は便利だが、可能なら送信元 IP / VPC ネットワークで絞る
  • 権限変更は本番反映前に検証環境で動作確認
  • レプリケーション環境では権限変更がレプリカに伝搬する点を意識
  • クラウド (RDS / Aurora) では一部のシステム権限が制限される。サービス固有のロールを利用

関連

編集
Post Share
子ページ
  1. ユーザー作成
  2. ユーザー名変更
  3. ユーザー一覧の表示
同階層のページ
  1. 基本構文
  2. データベース関連
  3. テーブル関連
  4. ユーザー関連
  5. メタデータ関連
  6. NULL判定を伴うCASE分の使用方法