USER( ) --以下の2つの関数はUSER関数の別名で、USER関数と同じ動作をする。 SESSION_USER( ) SYSTEM_USER( )
USER関数を使用することで接続時に指定されたユーザー名を調べることができます。
mysql> SELECT USER( ); +----------------+ | USER( ) | +----------------+ | root@localhost | +----------------+ 1 row in set (0.00 sec) mysql> SELECT SESSION_USER( ), SYSTEM_USER( ); +-----------------+----------------+ | SESSION_USER( ) | SYSTEM_USER( ) | +-----------------+----------------+ | root@localhost | root@localhost | +-----------------+----------------+ 1 row in set (0.00 sec)
通常のユーザーである場合、このUSER関数はCURRENT_USER関数と同じ結果を返します。
mysql> SELECT USER( ), CURRENT_USER( ); +----------------+-----------------+ | USER( ) | CURRENT_USER( ) | +----------------+-----------------+ | root@localhost | root@localhost | +----------------+-----------------+ 1 row in set (0.00 sec)
しかし匿名ユーザーでログインして、接続時に指定したユーザー名と認証時に使用されたユーザー名が異なる場合、CURRENT_USER関数はUSER関数が異なる結果を返します。
以下の例3は、接続時に「mysql -u tokumei」とデータベース上に存在しないユーザー名「tokumei」を指定し、匿名ユーザーとしてログインした場合の例です。
mysql> SELECT USER( ), CURRENT_USER( ); +-------------------+-----------------+ | USER( ) | CURRENT_USER( ) | +-------------------+-----------------+ | tokumei@localhost | @localhost | +-------------------+-----------------+ 1 row in set (0.00 sec)