「SHOW USERSと打ったらエラーになった。どうすれば?」
Linuxサーバーでデータベースを運用していると、ユーザー管理の場面でこういった疑問に直面することがあります。MySQLとコマンド体系が似ているようで微妙に違い、うろ覚えのコマンドを打ってエラーになるのはよくあるパターンです。
この記事では、RHEL 9系~Ubuntu 24.04 LTSを想定環境として、MariaDB 10.6~10.11上でmariadb user一覧を確認するSELECT文の正しい書き方、SHOW USERSが使えない理由と代替手段、現在の接続ユーザーや権限の確認方法まで解説します。
この記事のポイント
・MariaDBユーザー一覧は SELECT user, host FROM mysql.user; で取得する
・SHOW USERSコマンドはMariaDB/MySQL共通で存在せず実行するとエラーになる
・SHOW GRANTS FOR 'user'@'host'; で特定ユーザーの権限を個別に確認できる
・現在の接続ユーザーは SELECT CURRENT_USER(); で即確認できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
MariaDBでユーザー一覧の確認が必要になる場面
Linuxサーバー上でMariaDBを運用していると、ユーザー一覧を確認したい場面は意外と多くあります。・不要になったアカウントが残っていないか整理したいとき
・別のサーバーに同じ構成を再現したいとき
・接続エラーが出て、該当ユーザーが存在するか確認したいとき
MariaDBのユーザー情報はシステムデータベース「mysql」の「user」テーブルに格納されています。このテーブルを直接参照することで、登録されているすべてのユーザーとホスト情報をまとめて確認できます。
SELECT文でMariaDB user一覧を取得する基本手順
MariaDBにログインし、mysql.userテーブルをSELECT文で参照するのが基本手順です。1. MariaDBにログインする
まずmariadbクライアントでローカルに接続します。# rootユーザーでログイン(パスワードを入力) mariadb -u root -p # または従来の mysql コマンドでも可 mysql -u root -p
2. mysql.userテーブルでユーザーとホストを確認する
ログイン後、以下のSELECT文を実行します。-- ユーザー名とホストの一覧(最小構成) SELECT user, host FROM mysql.user;
+------------------+---------------+ | user | host | +------------------+---------------+ | root | 127.0.0.1 | | root | ::1 | | root | localhost | | mariadb.sys | localhost | | appuser | 192.168.1.% | | webuser | % | +------------------+---------------+ 6 rows in set (0.001 sec)
3. 認証プラグインや詳細情報を確認する
パスワードの認証方式や有効期限も含めた詳細を確認したい場合は、列を追加します。-- 認証プラグインとパスワード有効期限も含めて確認 SELECT user, host, plugin, password_expired FROM mysql.user;
+------------------+---------------+-----------------------+------------------+ | user | host | plugin | password_expired | +------------------+---------------+-----------------------+------------------+ | root | localhost | unix_socket | N | | mariadb.sys | localhost | mysql_native_password | N | | appuser | 192.168.1.% | mysql_native_password | N | | webuser | % | mysql_native_password | N | +------------------+---------------+-----------------------+------------------+
SHOW USERSコマンドはなぜ使えないのか
MariaDBもMySQLも、「SHOW USERS;」というコマンドは存在しません。ユーザー一覧を取得しようと試みて実行すると、次のようなエラーになります。-- 誤ったコマンド(エラーになる) SHOW USERS;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USERS' at line 1
なお、SHOW構文には「SHOW GRANTS」という有効なコマンドがあります。これはユーザーに付与された権限を確認するためのもので、ユーザー一覧そのものではありませんが、権限管理の場面でよく使います。
-- 現在ログイン中のユーザーの権限を確認 SHOW GRANTS; -- 特定ユーザーの権限を確認 SHOW GRANTS FOR 'appuser'@'%';
現在接続中のユーザーを確認する
「自分が今どのユーザーとして接続しているか」を確認する場合は、CURRENT_USER()関数を使います。-- 現在のログインユーザーを確認 SELECT CURRENT_USER(); -- セッション開始時に認証されたユーザーを確認(プロキシ認証時に差が出る) SELECT USER();
+----------------+ | CURRENT_USER() | +----------------+ | root@localhost | +----------------+
-- 接続中の全セッションを確認(PROCESS権限が必要) SHOW PROCESSLIST;
+----+---------+--------------------+-------+---------+------+------------------+ | Id | User | Host | db | Command | Time | Info | +----+---------+--------------------+-------+---------+------+------------------+ | 1 | root | localhost | NULL | Query | 0 | SHOW PROCESSLIST | | 2 | appuser | 192.168.1.10:43210 | appdb | Sleep | 12 | NULL | +----+---------+--------------------+-------+---------+------+------------------+
MariaDBを含むLinuxサーバーの運用スキルを体系的に学びたい方には、現場で使えるLinuxサーバー管理の実務を2日間で習得できるLinux Master Pro Seminarも参考にしてください。
よくあるエラーと対処法
「Access denied for user 'root'@'localhost'」が出た場合
mysql.userテーブルを参照するにはSELECT権限が必要です。MariaDB 10.4以降でrootのpluginがunix_socketになっている場合、パスワード認証ではログインできません。sudoを使ったOS認証でログインしてください。# OS認証(unix_socket)でMariaDBにログイン sudo mariadb
パスワード列が表示されない・列名が違う場合
MariaDB 10.4以降では従来の「Password」列が廃止され、「authentication_string」列に移行しています。古い手順書を参考にしてパスワードハッシュを確認しようとするとエラーになることがあります。現在の列構成はSELECT *で全列を確認してください。-- 全列を確認して列名を把握する(1行目のみ表示) SELECT * FROM mysql.user LIMIT 1\G
「Table 'mysql.user' doesn't exist」が出た場合
MariaDBのシステムテーブルが初期化されていない可能性があります。インストール直後にmariadb-install-dbを実行してシステムテーブルを作成してください。# システムテーブルの初期化(MariaDB 10.4以降) sudo mariadb-install-db --user=mysql
本記事のまとめ
MariaDB user一覧を確認するコマンドをまとめます。| やりたいこと | コマンド |
|---|---|
| ユーザーとホストの一覧 | SELECT user, host FROM mysql.user; |
| 認証プラグインも含めた詳細 | SELECT user, host, plugin FROM mysql.user; |
| 現在ログイン中のユーザー | SELECT CURRENT_USER(); |
| 特定ユーザーの権限確認 | SHOW GRANTS FOR 'user'@'host'; |
| 接続中の全セッション確認 | SHOW PROCESSLIST; |
20年以上・3,100名以上の指導実績を持つ宮崎智広が講師を務める少人数ハンズオンセミナーを開催しています。
MariaDB・MySQL等のデータベース管理を含むLinuxサーバー運用スキルを2日間で習得できます。
>> Linux Master Pro Seminar の詳細はこちら
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:mysqldumpの主要オプション完全ガイド|よく使う組み合わせ例
- この記事の属するカテゴリ:データーベース管理へ戻る

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