この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
更新日時:2026-05-13 08:53:46
タイトル: ユーザー関連
本稿は 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 / DROP | DDL |
INDEX | インデックス管理 |
EXECUTE | ストアド呼出 |
CREATE USER | ユーザ管理 |
RELOAD | FLUSH 実行 |
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 OPTION や ALL PRIVILEGES を渡さない
- 同じ user 名でも host 違いで権限が別。意図しない権限漏れがないかチェック
% の host は便利だが、可能なら送信元 IP / VPC ネットワークで絞る
- 権限変更は本番反映前に検証環境で動作確認
- レプリケーション環境では権限変更がレプリカに伝搬する点を意識
- クラウド (RDS / Aurora) では一部のシステム権限が制限される。サービス固有のロールを利用
関連