C'è un modo per conoscere il tuo nome utente corrente in mysql?


88

Vorrei sapere se esiste un modo per una query mysql di restituire il nome utente dell'utente che emette la query.

È possibile?

Risposte:


77

Prova la CURRENT_USER()funzione. Questo restituisce il nome utente che MySQL ha utilizzato per autenticare la connessione del client. È questo nome utente che determina i tuoi privilegi.

Potrebbe essere diverso dal nome utente inviato a MySQL dal client (ad esempio, MySQL potrebbe utilizzare un account anonimo per autenticare il client, anche se hai inviato un nome utente). Se vuoi il nome utente che il client ha inviato a MySQL durante la connessione, usa USER()invece la funzione.

Il valore indica il nome utente specificato durante la connessione al server e l'host client da cui ci si è connessi. Il valore può essere diverso da quello di CURRENT_USER ().

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


Grazie per la tua risposta, se sto leggendo correttamente, il vantaggio di utilizzare CURRENT_USER () invece di USER () è che CURRENT_USER () restituirà solo utenti autenticati?
user1090729

Fondamentalmente, il client può specificare un utente da utilizzare per l'autenticazione, ma quell'utente specifico potrebbe non disporre dei diritti di concessione su una tabella. Tuttavia, l'accesso può ancora essere concesso a causa dei diritti anonimi sul tavolo. Questa funzione restituisce all'utente i diritti di concessione che sono stati utilizzati per autenticare l'utente (forse anonimo) anziché l'utente specificato dal client. C'è un buon esempio nei documenti lì.
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
Utente

15
Ti sei ricordato il SELECT nella tua query, cioè: SELECT CURRENT_USER (); Pubblica la tua richiesta.
scotru

1
Ho provato questo per testare e CURRENT_USER()non era corretto per la domanda "C'è un modo per conoscere * il tuo * nome utente corrente in mysql?". La risposta è stata "USER ()", che "Restituisce l'utente corrente di MySQL" ( dev.mysql.com/doc/refman/5.7/en/… ). Dovresti aggiornare la tua risposta per essere più completa, è troppo breve.
James Wilkins

87

Prova a scappare

SELECT USER();

o

SELECT CURRENT_USER();

A volte può essere diverso, USER () restituirà il login che hai tentato di autenticare e CURRENT_USER () restituirà come ti è stato effettivamente permesso di autenticarti.


18

Usa questa query:

SELECT USER();

O

SELECT CURRENT_USER;


3

per stampare l'utente corrente che sta utilizzando il database

select user();

o

select current_user();

3
Non mi piace molto la tua risposta, non solo non aggiunge nulla di nuovo a ciò che è stato risposto in precedenza, ma la tua risposta perde la parte più importante: la differenza tra queste due funzioni.
Jonathan Parent Lévesque

2
All'interno di un programma o di una vista memorizzati, CURRENT_USER () restituisce l'account dell'utente che ha definito l'oggetto (come indicato dal suo valore DEFINER) a meno che non sia definito con la caratteristica SQL SECURITY INVOKER. In quest'ultimo caso, CURRENT_USER () restituisce l'invocatore dell'oggetto. I trigger e gli eventi non hanno alcuna opzione per definire la caratteristica SICUREZZA SQL, quindi per questi oggetti, CURRENT_USER () restituisce l'account per l'utente che ha definito l'oggetto. Per restituire l'invoker, utilizzare USER () o SESSION_USER (). dev.mysql.com/doc/refman/5.5/en/string-functions.html
Jonathan Parent Lévesque

nessuno ha il tempo di leggere tutta la cronologia di quelle funzioni e nessuno ha chiesto la tua spiegazione su quelle funzioni, la domanda principale era come trovare un nome utente in mysql, non ha chiesto quali differenze tra queste due affermazioni. e non c'è niente da aggiungere di nuovo alla risposta esistente, perché è l'unica risposta, rispondendo si guadagna la fiducia per l'utente che questa è la risposta.
Prashanthhh Kumarr

2

Puoi anche usare: mysql> seleziona utente, host da 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                     |
+---------------+-------------------------------+

1

Puoi trovare il nome utente corrente con la funzione CURRENT_USER () in MySQL.

per Es: SELECT CURRENT_USER();

Ma CURRENT_USER()non restituirà sempre l'utente connesso. Quindi, nel caso in cui desideri avere l'utente connesso, usa SESSION_USER()invece.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.