mysqlクエリがクエリを発行したユーザーのユーザー名を返す方法があるかどうか知りたいのですが。
これは可能ですか?
mysqlクエリがクエリを発行したユーザーのユーザー名を返す方法があるかどうか知りたいのですが。
これは可能ですか?
回答:
CURRENT_USER()関数を試してください。これにより、MySQLがクライアント接続の認証に使用したユーザー名が返されます。特権を決定するのはこのユーザー名です。
これは、クライアントによってMySQLに送信されたユーザー名とは異なる場合があります(たとえば、ユーザー名を送信した場合でも、MySQLは匿名アカウントを使用してクライアントを認証する場合があります)。接続時にクライアントがMySQLに送信するユーザー名が必要な場合は、USER()代わりに関数を使用してください。
この値は、サーバーへの接続時に指定したユーザー名と、接続元のクライアントホストを示します。値は、CURRENT_USER()の値とは異なる場合があります。
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_USER()' at line 1
CURRENT_USER()が、「mysqlの現在のユーザー名を知る方法はありますか?」という質問には正しくありませんでした。答えは「USER()」でした。これは「現在のMySQLユーザーを返します」(dev.mysql.com/doc/refman/5.7/en/…)。あなたはより完全になるようにあなたの答えを更新するべきです、それはあまりにも短いです。
どちらかを実行してみてください
SELECT USER();
または
SELECT CURRENT_USER();
それは時々異なることができ、USER()は、それによってあなたが認証しようとしてログインを返しますCURRENT_USER()あなたが実際に認証を許可されたかを返します。
次を使用できます。
SELECT USER();
または
SELECT CURRENT_USER();
詳細はこちらhttp://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user
データベースを使用している現在のユーザーを印刷するには
select user();
または
select current_user();
次を使用することもできます:mysql> select user、host from mysql.user;
+---------------+-------------------------------+
| user | host |
+---------------+-------------------------------+
| fkernel | % |
| nagios | % |
| readonly | % |
| replicant | % |
| reporting | % |
| reporting_ro | % |
| nagios | xx.xx.xx.xx |
| haproxy_root | xx.xx.xx.xx
| root | 127.0.0.1 |
| nagios | localhost |
| root | localhost |
+---------------+-------------------------------+
MySQLのCURRENT_USER()関数を使用して、現在のユーザー名を見つけることができます。
例:
SELECT CURRENT_USER();
ただしCURRENT_USER()、ログインしたユーザーが常に返されるとは限りません。したがって、ログインユーザーが必要な場合は、SESSION_USER()代わりにを使用してください。