タイトル: ユーザーおよびパスワード一覧の確認
MySQL / MariaDB 上のユーザー一覧と認証関連情報を確認する方法です。実行には mysql データベースへの参照権限(通常はroot権限)が必要です。
基本コマンド
以下のコマンドを実行する。
|
> SELECT user, password FROM mysql.user;
|
MySQL 5.7 以降の場合
MySQL 5.7以降ではパスワードカラムが authentication_string に変わっています。次のように書きます。
|
SELECT user, host, authentication_string |
パスワード本体はハッシュ化されており、平文では取得できません。
認証プラグインも一緒に確認
|
SELECT user, host, plugin |
主な plugin 値:
| プラグイン | 意味 |
|---|---|
mysql_native_password | 従来のパスワード認証 |
caching_sha2_password | MySQL 8.0 既定 |
auth_socket / unix_socket | UnixソケットでOSユーザー名と照合 |
権限も一緒に見る
|
-- 個別ユーザーの権限 |
パスワードの変更
|
-- MySQL 5.7+ / MariaDB |
関連する確認コマンド
| コマンド | 用途 |
|---|---|
SELECT user, host FROM mysql.user; | ユーザーと接続元の一覧 |
SHOW GRANTS FOR 'u'@'h'; | そのユーザーの権限 |
SELECT CURRENT_USER, USER(); | 現在の接続情報 |
SHOW DATABASES; | そのユーザーから見えるDB一覧 |
SHOW PROCESSLIST; | 接続中ユーザーの一覧 |
注意点
- mysql.user の参照には権限が必要: 通常は
root等管理者ユーザーのみ - パスワードはハッシュ:
authentication_stringは平文ではない - 同じユーザー名でhostが違うと別レコード:
'root'@'localhost'と'root'@'%'は別ユーザー扱い - 本番では
mysql.user参照ログも残ること、監査対象になりうることに注意