ユーザーの一覧や設定された権限などユーザーに関する情報を取得する
MariaDB で作成済みのユーザーの一覧を取得したり、ユーザー毎に設定されている各項目の値を確認する方法について解説します。
(Last modified: )
作成済みのユーザー一覧を確認する
MariaDB ではユーザーを作成すると mysql データベースの中の user テーブルに格納されます。実際にユーザーを追加して確認してみます。 MariaDB コマンドラインツールを起動し、 MariaDB に接続したあと次のように実行してください。
create user shika@localhost identified by 'deer';
新しいユーザーが作成できました。(ユーザーを作成する詳しい方法については「ユーザーを作成する(CREATE USER文)」を参照されてください)。
それでは mysql データベースの user テーブルから先ほど作成したユーザーに関する情報を取得してみます。次のように実行してください。
select * from mysql.user where user='shika'\G
user テーブルには数多くのカラムがあり、ユーザー毎に非常に多くの値が格納されています。例えばユーザー名が格納されている User と Host 、ハッシュ化されたパスワードが格納されいる Password 、使用している認証プラグインが格納されている plugin 、そしてユーザーに付与されている権限に関する項目が多数あります。
Host: localhost User: shika Password: *C1ED236B8D734852F054CD01E228058D1D93966D Select_priv: N Insert_priv: N Update_priv: N Delete_priv: N Create_priv: N Drop_priv: N Reload_priv: N Shutdown_priv: N Process_priv: N File_priv: N Grant_priv: N References_priv: N Index_priv: N Alter_priv: N Show_db_priv: N Super_priv: N Create_tmp_table_priv: N Lock_tables_priv: N Execute_priv: N Repl_slave_priv: N Repl_client_priv: N Create_view_priv: N Show_view_priv: N Create_routine_priv: N Alter_routine_priv: N Create_user_priv: N Event_priv: N Trigger_priv: N Create_tablespace_priv: N Delete_history_priv: N ssl_type: ssl_cipher: x509_issuer: x509_subject: max_questions: 0 max_updates: 0 max_connections: 0 max_user_connections: 0 plugin: mysql_native_password authentication_string: *C1ED236B8D734852F054CD01E228058D1D93966D password_expired: N is_role: N default_role: max_statement_time: 0.000000
それでは mysql データベースの user テーブルからすべてのデータを取得して作成済みのユーザー一覧を確認してみます。すべてのカラムの値を取得すると見にくくなるので user カラムと host カラムの情報を取得します。次のように実行してください。
select user, host from mysql.user;
作成済みのユーザーの一覧を取得することができました。
現在接続しているユーザーを確認する
現在 MariaDB に接続しているユーザーを確認するには user() 関数と current_user() 関数を使います。簡単にいうと user() 関数は接続時に指定したユーザー名とホストを返します。 current_user() 関数は実際に認証されたユーザー名とホストを返します。通常この二つは同じ結果を返しますが、接続時に指定したユーザー名ではないユーザーとして認証がされてしまうケースがあるようです(匿名ユーザーがらみでそうなるようです)。
MariaDB の中で参照する場合に重要なのは実際に認証されたユーザー名とホスト名なので current_user() 関数の値を取得します。今回は例として user() 関数と current_user() 関数の両方の値を取得してみます。次のように実行してください。
select user(), current_user();
現在は root@localhost ユーザーで MariaDB に接続していたので、どちらの関数も同じ root@localhost を返しました。
ユーザーが作成された時のCREATE USER文を確認する
指定したユーザーを作成した時の CREATE USER 文を確認する方法です(実際に実行された SQL そのものではなく、同じユーザーを作成する場合に必要となる SQL 文です)。 SHOW CREATE USE 文を使います。書式は次の通りです。
SHOW CREATE USER user_name
user_name に確認したいユーザー名を指定してください。
それでは先ほど作成した shika@localhost ユーザーについて確認してみます。次のように実行してください。
show create user shika@localhost;
次のように表示されました。
CREATE USER `shika`@`localhost` IDENTIFIED BY PASSWORD 'ハッシュ化されたパスワード'
このように作成済みのユーザーと同じユーザーを作成するのに必要な SQL 文を取得することができます。
ユーザーに設定されている権限を確認する
作成したユーザーが MariaDB でデータベースを作成したり他のユーザーを作成するには必要となる権限が設定されている必要があります。 MariaDB で設定可能な権限の一覧や権限の設定方法は別のページで解説しますが、ここではユーザーに設定された権限を確認する方法を確認します。
ユーザーに設定した権限を確認するには SHOW GRANTS 文を使います。書式は次の通りです。
SHOW GRANTS [FOR user|role]
ユーザーの権限を確認するには対象のユーザー名を user で指定します。
それでは先ほど作成した shika@localhost ユーザーに設定されている権限を確認します。次のように実行してください。
show grants for shika@localhost;
次のように表示されました。
GRANT USAGE ON *.* TO `shika`@`localhost` IDENTIFIED BY PASSWORD '*ハッシュ化されたパスワード'
詳しい説明はここでは行いませんが、 shika@localhost ユーザーには何も権限が設定されていません。
-- --
MariaDB で作成済みのユーザーの一覧を取得したり、ユーザー毎に設定されている各項目の値を確認する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。