¿Hay alguna forma de saber su nombre de usuario actual en mysql?

88

Me gustaría saber si hay una forma de que una consulta de mysql devuelva el nombre de usuario del usuario que emite la consulta.

es posible?

usuario1090729
fuente

Respuestas:

77

Prueba la CURRENT_USER()función. Esto devuelve el nombre de usuario que MySQL usó para autenticar su conexión de cliente. Es este nombre de usuario el que determina sus privilegios.

Este puede ser diferente del nombre de usuario que el cliente envió a MySQL (por ejemplo, MySQL podría usar una cuenta anónima para autenticar a su cliente, aunque envió un nombre de usuario). Si desea el nombre de usuario que el cliente envió a MySQL al conectarse, use la USER()función en su lugar.

El valor indica el nombre de usuario que especificó al conectarse al servidor y el host del cliente desde el que se conectó. El valor puede ser diferente al de CURRENT_USER ().

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user

scotru
fuente
Gracias por su respuesta, si estoy leyendo esto correctamente, la ventaja de usar CURRENT_USER () en lugar de USER () es que CURRENT_USER () solo devolverá usuarios autenticados.
user1090729
Básicamente, el cliente puede especificar un usuario para usar para la autenticación, pero ese usuario específico puede no tener derechos de concesión en una mesa. Sin embargo, el acceso aún puede otorgarse debido a derechos anónimos sobre la mesa. Esta función devuelve al usuario los derechos de concesión que se utilizaron para autenticar al usuario (tal vez anónimo) en lugar del usuario especificado por el cliente. Hay un buen ejemplo en los documentos.
scotru
1
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
Usuario
15
¿Recordó el SELECT en su consulta, es decir: SELECT CURRENT_USER (); Publique su consulta.
scotru
1
Intenté esto para probar y CURRENT_USER()no fue correcto para la pregunta "¿Hay alguna manera de saber * su * nombre de usuario actual en mysql?". La respuesta fue "USER ()", que "Devuelve el usuario actual de MySQL" ( dev.mysql.com/doc/refman/5.7/en/… ). Deberías actualizar tu respuesta para que sea más completa, es demasiado corta.
James Wilkins
87

Intenta correr

SELECT USER();

o

SELECT CURRENT_USER();

A veces puede ser diferente, USER () devolverá el inicio de sesión que intentó autenticar y CURRENT_USER () devolverá cómo se le permitió autenticarse.

Petr Mensik
fuente
18

Utilice esta consulta:

SELECT USER();

O

SELECT CURRENT_USER;
Mihai
fuente
3

para imprimir el usuario actual que está usando la base de datos

select user();

o

select current_user();
Prashanthhh Kumarr
fuente
3
No me gusta mucho tu respuesta, no solo no agrega nada nuevo a lo anteriormente respondido, sino que tu respuesta pierde la parte más importante: la diferencia entre esas dos funciones.
Jonathan Parent Lévesque
2
Dentro de un programa o vista almacenados, CURRENT_USER () devuelve la cuenta del usuario que definió el objeto (como lo indica su valor DEFINER) a menos que se defina con la característica SQL SECURITY INVOKER. En el último caso, CURRENT_USER () devuelve el invocador del objeto. Los desencadenadores y eventos no tienen la opción de definir la característica SEGURIDAD de SQL, por lo que para estos objetos, CURRENT_USER () devuelve la cuenta del usuario que definió el objeto. Para devolver el invocador, use USER () o SESSION_USER (). dev.mysql.com/doc/refman/5.5/en/string-functions.html
Jonathan Parent Lévesque
nadie tiene tiempo para leer todo el historial de esas funciones, y nadie le preguntó su explicación sobre esas funciones, la pregunta principal era cómo encontrar un nombre de usuario en mysql, no preguntó sobre las diferencias de esas dos declaraciones. y no hay nada nuevo que agregar al contestador existente, ya que es la única respuesta, al responder le da al usuario la confianza de que esta es la respuesta.
Prashanthhh Kumarr
2

También puede utilizar: mysql> seleccionar usuario, host de 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                     |
+---------------+-------------------------------+
Ashish Karpe
fuente
1

Puede encontrar el nombre de usuario actual con la función CURRENT_USER () en MySQL.

por ejemplo: SELECT CURRENT_USER();

Pero CURRENT_USER()no siempre devolverá el usuario que inició sesión. Entonces, en caso de que desee tener el usuario conectado, utilice SESSION_USER()en su lugar.

heisenbug47
fuente