In MySQL, USER()
is a built-in function that returns the current MySQL user name and host name, given when connecting to MySQL.
The result is returned as a string in the utf8mb3
character set.
The value returned by USER()
could be different to the value returned by CURRENT_USER()
.
Syntax
The syntax goes like this:
USER()
No arguments are required or accepted.
Example
Here’s an example to demonstrate:
SELECT USER();
Result:
+------------------+ | USER() | +------------------+ | barney@localhost | +------------------+
USER()
vs CURRENT_USER()
The USER()
function doesn’t always return the same result as the CURRENT_USER()
function.
For example, if we connect using an anonymous user:
mysql
Then run USER()
and CURRENT_USER()
:
SELECT
USER(),
CURRENT_USER;
Result:
+------------------+--------------+ | USER() | CURRENT_USER | +------------------+--------------+ | barney@localhost | @localhost | +------------------+--------------+
Here, the client specified a user name of barney
, but the server authenticated the client using an anonymous user account. Therefore the USER()
function returns barney, and CURRENT_USER()
returns @localhost
.
No Arguments are Accepted
The USER()
function doesn’t accept any arguments. Passing any arguments to USER()
results in an error:
SELECT USER(123);
Result:
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 '123)' at line 1
The SESSION_USER()
and SYSTEM_USER()
Functions
MySQL has a SESSION_USER()
function and a SYSTEM_USER()
function that are both synonyms for USER()
. Any of the examples above can be done with all three functions.