MySQLのユーザー一覧と権限を確認するコマンド|SELECT user・SHOW GRANTSの使い方


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, MySQL > MySQLのユーザー一覧と権限を確認するコマンド|SELECT user・SHOW GRANTSの使い方
「MySQLのユーザーが増えてきて、誰がどのデータベースにアクセスできるのか把握できなくなってきた」
MySQLを運用していると、ユーザー管理が複雑になりがちです。

この記事では、MySQLのユーザー一覧を確認する SELECT user と、権限を確認する SHOW GRANTS の実践的な使い方を解説します。
ユーザーの作成・権限付与・削除まで、現場で使う操作をひととおりカバーします。

【この記事でわかること】

・MySQLのユーザー一覧は SELECT User, Host FROM mysql.user; で確認できる
・ユーザーの権限確認は SHOW GRANTS FOR 'ユーザー'@'ホスト'; を使う
・Host列の % は全ホスト許可を意味し、セキュリティ上の注意が必要
・MariaDB(RHEL/CentOS 7以降のデフォルト)でもSQL文は基本同じ


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

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.% | +-----------+-----------+

User列:ユーザー名
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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。


無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。