Existe uma maneira de saber seu nome de usuário atual no mysql?

90

Gostaria de saber se existe uma maneira de uma consulta mysql retornar o nome de usuário do usuário que emite a consulta.

Isso é possível?

user1090729
fonte

Respostas:

80

Experimente a CURRENT_USER()função. Isso retorna o nome de usuário que o MySQL usou para autenticar sua conexão de cliente. É esse nome de usuário que determina seus privilégios.

Isso pode ser diferente do nome de usuário enviado ao MySQL pelo cliente (por exemplo, o MySQL pode usar uma conta anônima para autenticar seu cliente, mesmo que você tenha enviado um nome de usuário). Se você quiser o nome de usuário que o cliente enviou ao MySQL ao se conectar, use a USER()função.

O valor indica o nome de usuário que você especificou ao se conectar ao servidor e o host do cliente do qual você se conectou. O valor pode ser diferente de CURRENT_USER ().

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

Scotru
fonte
Obrigado pela sua resposta, se estou lendo corretamente, a vantagem de usar CURRENT_USER () em vez de USER () é que CURRENT_USER () retornará apenas usuários autenticados?
user1090729
Basicamente, o cliente pode especificar um usuário a ser usado para autenticação - mas esse usuário específico pode não ter direitos de concessão em uma mesa. No entanto, o acesso ainda pode ser concedido por causa de direitos anônimos na mesa. Esta função retorna o usuário nos direitos de concessão que foram usados ​​para autenticar o usuário (talvez anônimo) em vez do usuário especificado pelo cliente. Há um bom exemplo nos documentos aí.
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
Usuário de
15
Você se lembrou do SELECT na sua consulta, ou seja: SELECT CURRENT_USER (); Poste sua consulta.
scotru
1
Tentei fazer isso para testar e CURRENT_USER()não acertou para a pergunta "Existe uma maneira de saber * seu * nome de usuário atual no mysql?". A resposta foi "USER ()", que "Retorna o usuário MySQL atual" ( dev.mysql.com/doc/refman/5.7/en/… ). Você deve atualizar sua resposta para ser mais completa, é muito curta.
James Wilkins
88

Tente correr também

SELECT USER();

ou

SELECT CURRENT_USER();

Às vezes pode ser diferente, USER () retornará pelo login que você tentou autenticar e CURRENT_USER () retornará como você realmente teve permissão para autenticar.

Petr Mensik
fonte
18

Use esta consulta:

SELECT USER();

Ou

SELECT CURRENT_USER;
Mihai
fonte
3

para imprimir o usuário atual que está usando o banco de dados

select user();

ou

select current_user();
Prashanthhh Kumarr
fonte
3
Não gosto muito da sua resposta, não só não acrescenta nada de novo ao que foi respondido anteriormente, mas a sua resposta perde a parte mais importante: a diferença entre essas duas funções.
Jonathan Parent Lévesque
2
Dentro de um programa ou visão armazenada, CURRENT_USER () retorna a conta para o usuário que definiu o objeto (conforme fornecido por seu valor DEFINER), a menos que definido com a característica SQL SECURITY INVOKER. No último caso, CURRENT_USER () retorna o invocador do objeto. Gatilhos e eventos não têm opção para definir a característica SQL SECURITY, portanto, para esses objetos, CURRENT_USER () retorna a conta para o usuário que definiu o objeto. Para retornar o invocador, use USER () ou SESSION_USER (). dev.mysql.com/doc/refman/5.5/en/string-functions.html
Jonathan Parent Lévesque
ninguém tem tempo de ler todo o histórico dessas funções, e ninguém perguntou sua explicação sobre essas funções, a principal questão era como encontrar um nome de usuário no mysql, ele não perguntou quais eram as diferenças entre essas duas afirmações. e não há nada a acrescentar ao responderr existente, pois é a única resposta, ao responder ganha confiança para o usuário que esta é a resposta.
Prashanthhh Kumarr
2

Você também pode usar: 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                     |
+---------------+-------------------------------+
Ashish Karpe
fonte
1

Você pode encontrar o nome de usuário atual com a função CURRENT_USER () no MySQL.

para Ex: SELECT CURRENT_USER();

Mas CURRENT_USER()nem sempre retornará o usuário conectado. Portanto, caso você queira ter o usuário conectado, use SESSION_USER().

heisenbug47
fonte