2013-10-13 8 views

risposta

43

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

Questo potrebbe essere diverso dal nome utente che è stato 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 si desidera il nome utente che il client ha inviato a MySQL durante la connessione, utilizzare invece la funzione USER().

Il valore indica il nome utente specificato durante la connessione al server e l'host del client dal quale è stata effettuata la connessione. 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

+0

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

+0

In sostanza, il client può specificare un utente da utilizzare per l'autenticazione, ma tale utente specifico potrebbe non disporre dei diritti di concessione su una tabella. Tuttavia, l'accesso potrebbe ancora essere concesso a causa di diritti anonimi sul tavolo. Questa funzione restituisce all'utente i diritti di concessione che sono stati utilizzati per autenticare l'utente (forse anonimo) piuttosto che l'utente specificato dal client. C'è un buon esempio nei documenti lì. – scotru

+0

'ERRORE 1064 (42000): si è verificato un errore nella sintassi SQL; controlla il manuale che corrisponde alla versione del tuo server MySQL per la sintassi corretta da usare vicino a "CURRENT_USER()" alla riga 1 " – User

9

utilizzare questa query:

SELECT USER(); 

O

SELECT CURRENT_USER; 
53

Provare a funzionare sia

SELECT USER(); 

o

SELECT CURRENT_USER(); 

A volte può essere diversa, USER() tornerà con la quale si è tentato il login per autenticare e CURRENT_USER() tornerà come siete stati in realtà permesso di autenticazione.

2

per stampare l'utente corrente che utilizza il database di

select user(); 

o

select current_user(); 
+1

Non mi piace molto la tua risposta, non solo non aggiunge nulla di nuovo a ciò che è stato precedentemente risposto, ma alla tua risposta manca la parte più importante: la differenza tra queste due funzioni. –

+2

* All'interno di un programma o una vista memorizzati, CURRENT_USER() restituisce l'account per l'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'invoker dell'oggetto. I trigger e gli eventi non hanno alcuna opzione per definire la caratteristica SQL SECURITY, quindi per questi oggetti, CURRENT_USER() restituisce l'account per l'utente che ha definito l'oggetto. Per restituire l'invoker, usa USER() o SESSION_USER(). * Https://dev.mysql.com/doc/refman/5.5/en/string-functions.html –

+0

nessuno ha tempo di leggere tutta la cronologia di quelle funzioni e nessuno ha chiesto spiegazioni su tali funzioni, la domanda principale era come trovare un nome utente in mysql, non ha chiesto a wat le differenze di queste due affermazioni. e non c'è nulla da aggiungere di nuovo al risponditore esistente, perché è l'unica risposta, rispondendola acquisisce sicurezza all'utente che questa è la risposta. –

1

È anche possibile utilizzare: mysql> select 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      | 
+---------------+-------------------------------+ 
Problemi correlati