MySQLを運用していると、ユーザー管理が複雑になりがちです。
この記事では、MySQLのユーザー一覧を確認する
SELECT user と、権限を確認する SHOW GRANTS の実践的な使い方を解説します。ユーザーの作成・権限付与・削除まで、現場で使う操作をひととおりカバーします。
【この記事でわかること】
・MySQLのユーザー一覧は SELECT User, Host FROM mysql.user; で確認できる
・ユーザーの権限確認は SHOW GRANTS FOR 'ユーザー'@'ホスト'; を使う
・Host列の % は全ホスト許可を意味し、セキュリティ上の注意が必要
・MariaDB(RHEL/CentOS 7以降のデフォルト)でもSQL文は基本同じ
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
MySQLにログインする
ユーザー管理の操作は、MySQLにログインしてから行います。# MySQLにrootユーザーでログイン $ mysql -u root -p Enter password: mysql>
ユーザー一覧を表示する
1. mysql.userテーブルからユーザーを確認
# MySQL 5.7以降 / MariaDB 10.4以降 mysql> SELECT User, Host FROM mysql.user; +-----------+-----------+ | User | Host | +-----------+-----------+ | root | localhost | | webapp | % | | readonly | 10.0.0.% | +-----------+-----------+
・Host列:接続を許可するホスト。
%は全ホスト、localhostはローカルのみ※ MySQL 5.6以前では
SELECT User, Host, Password FROM mysql.user; でパスワードハッシュも確認できましたが、MySQL 5.7以降ではPassword列が authentication_string に変更されています。ユーザーの権限を確認する
1. SHOW GRANTSで権限を表示
# 特定ユーザーの権限を表示 mysql> SHOW GRANTS FOR 'webapp'@'%'; +-----------------------------------------------------+ | Grants for webapp@% | +-----------------------------------------------------+ | GRANT SELECT, INSERT, UPDATE, DELETE ON `mydb`.* ... | +-----------------------------------------------------+
2. 自分自身の権限を確認
# 現在のユーザーの権限を確認 mysql> SHOW GRANTS;
ユーザーの作成と権限付与
1. ユーザーを作成する
# ユーザーを作成(localhostからのみ接続可能) mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password123'; # 全ホストから接続可能なユーザーを作成 mysql> CREATE USER 'newuser'@'%' IDENTIFIED BY 'password123';
2. 権限を付与する
# 特定データベースの全権限を付与 mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'newuser'@'localhost'; # SELECT権限のみ付与(読み取り専用ユーザー) mysql> GRANT SELECT ON mydb.* TO 'readonly'@'10.0.0.%'; # 権限を反映 mysql> FLUSH PRIVILEGES;
3. ユーザーを削除する
# ユーザーを削除 mysql> DROP USER 'newuser'@'localhost';
MariaDBでの操作
RHEL/CentOS 7以降では、MySQLの代わりにMariaDBがデフォルトで採用されています。ユーザー管理のSQL文はほぼ同じですが、認証方式に違いがある場合があります。# MariaDBにログイン $ mysql -u root -p # MariaDBのバージョン確認 mysql> SELECT VERSION(); # ユーザー一覧(MariaDBでも同じSQL) mysql> SELECT User, Host FROM mysql.user;
MySQLを終了する
mysql> quit Bye
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| MySQLにログイン | mysql -u root -p |
| ユーザー一覧を表示 | SELECT User, Host FROM mysql.user; |
| ユーザーの権限を確認 | SHOW GRANTS FOR 'ユーザー'@'ホスト'; |
| ユーザーを作成 | CREATE USER 'ユーザー'@'ホスト' IDENTIFIED BY 'パスワード'; |
| 権限を付与 | GRANT ALL PRIVILEGES ON DB名.* TO 'ユーザー'@'ホスト'; |
| ユーザーを削除 | DROP USER 'ユーザー'@'ホスト'; |
MySQLのユーザー管理をもっと深く学びたい方へ
権限設定を誤るとデータベース全体がセキュリティリスクにさらされます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます