Vorrei sapere se esiste un modo per una query mysql per restituire il nome utente dell'utente che emette la query.C'è un modo per conoscere il tuo nome utente attuale in mysql?
È possibile?
Vorrei sapere se esiste un modo per una query mysql per restituire il nome utente dell'utente che emette la query.C'è un modo per conoscere il tuo nome utente attuale in mysql?
È possibile?
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
utilizzare questa query:
SELECT USER();
O
SELECT CURRENT_USER;
È possibile utilizzare:
SELECT USER();
o
SELECT CURRENT_USER();
Vedere più qui http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user
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.
per stampare l'utente corrente che utilizza il database di
select user();
o
select current_user();
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. –
* 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 –
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. –
È 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 |
+---------------+-------------------------------+
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
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
'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