CURRENT_USER関数/USER関数(現在のユーザー名とホスト名を取得する)

MySQL で CURRENT_USER 関数を使用すると MySQL に接続する時に実際に認証が行われたユーザー名とホスト名を取得することができます。また USER 関数を使用すると MySQL に接続する時に認証しようとして指定したユーザー名とホスト名を取得することができます。ここでは MySQL における CURRENT_USER 関数および USER 関数の使い方について解説します。

(Last modified: )

CURRENT_USER 関数とUSER 関数の使い方

CURRENT_USER 関数は MySQL に接続する時に実際に認証が行われたユーザー名とホスト名を取得するために使用します。書式は次の通りです。

CURRENT_USER()

また USER 関数は MySQL に接続する時に認証しようとして指定したユーザー名とホスト名を取得するために使用します。書式は次の通りです。

USER()

CURRENT_USER 関数と USER 関数で取得する値は通常同じになりますが、例えば hoge@localhost で接続しようとしたけれど実際には匿名ユーザーの ''@localhost で接続が行われた場合などには異なる結果となります。この場合、 USER 関数では hoge@localhost を取得し、 CURRENT_USER 関数では @localhost を取得します。

匿名ユーザーが作成されている状況で、作成されていないユーザー名で接続しようとした場合などにこういった状況が発生します。ユーザーに対してどのような権限が割り当てられるのかは CURRENT_USER 関数で取得できるユーザー情報に基づきます。

※ SESSION_USER 関数および SYSTEM_USER 関数は USER 関数と同じです。

-- --

それでは実際に試してみます。 MySQL にユーザーとして追加されている root@localhost で接続したあとで次のように実行してください。

select current_user(), user();

MySQL/CURRENT_USER/USER 関数の使い方(1)

MySQL/CURRENT_USER/USER 関数の使い方(2)

どちらも同じ結果となりました。

次に匿名ユーザーの ''@localhost ユーザーが作成されている状態で、作成されていない hoge@localhost ユーザーで MySQL へ接続します。そのあとで次のように実行してください。

select current_user(), user();

MySQL/CURRENT_USER/USER 関数の使い方(3)

MySQL/CURRENT_USER/USER 関数の使い方(4)

USER 関数の方は MySQL へ接続する時にこのユーザーで接続しようとして指定したユーザー名を取得していますが、 CURRENT_USER 関数の方は実際に認証に使用されたユーザー名を取得しています。

-- --

current_user 関数および user 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。