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

広告
eyecatch

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

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 関数の使い方について解説しました。

MySQLの使い方の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。