現在のクライアントの認証にサーバが使用した MySQL アカウントの、ユーザ名とホスト名のコンビネーションを戻します。このアカウントは、開発者のアクセス特権を確認します。SQL SECURITY DEFINER
特徴で定義されたストアド ルーチン内で、CURRENT_USER()
はルーチンのクリエイターを戻します。戻り値は utf8
文字セット内のストリングです。
CURRENT_USER()
の値は、USER()
の値によって異なる場合があります。
mysql>SELECT USER();
-> 'davida@localhost' mysql>SELECT * FROM mysql.user;
ERROR 1044: Access denied for user ''@'localhost' to database 'mysql' mysql>SELECT CURRENT_USER();
-> '@localhost'
この例は、クライアントが davida
のユーザ名を指定 ( USER()
の値で示されるように ) した場合でも、サーバは匿名のユーザ アカウント ( CURRENT_USER()
値の空のユーザ名部分に見られるように ) を使用してクライアントを認証するということを示しています。これが起こるひとつの原因として、davida
の権限テーブルにアカウント リストがないことが挙げられます。