Ce face CURRENT_USER()
CURRENT_USER() (se poate scrie și fără paranteze) arată contul din tabelele de drepturi care a fost folosit la autentificare, de exemplu ana@%. USER() arată ce a trimis clientul, de exemplu ana@192.168.1.20. Diferența apare când contul are în gazdă un model ca % sau când clientul a fost acceptat printr-un cont anonim.
În interiorul unei vederi sau al unei proceduri stocate definite cu SQL SECURITY DEFINER (implicit), CURRENT_USER() returnează contul celui care a creat obiectul. În triggere și evenimente este mereu creatorul; pentru utilizatorul care a pornit acțiunea folosește USER().
Ce returnează
Un text de forma nume@gazdă (setul de caractere utf8mb3).
Exemple
Exemplul 1: Contul și utilizatorul pe serverul de test
SELECT USER(), CURRENT_USER(), CURRENT_USER;
Rezultat
+----------------+----------------+----------------+
| USER() | CURRENT_USER() | CURRENT_USER |
+----------------+----------------+----------------+
| root@localhost | root@localhost | root@localhost |
+----------------+----------------+----------------+
Exemplul 2: Când cele două diferă
Utilizatoarea Ana se conectează de pe calculatorul 192.168.1.20, iar pe server există contul 'ana'@'%' (orice gazdă).
SELECT USER(), CURRENT_USER();
Rezultat în MySQL
+------------------+----------------+
| USER() | CURRENT_USER() |
+------------------+----------------+
| ana@192.168.1.20 | ana@% |
+------------------+----------------+
Exemplul 3: Folosit în comenzi de administrare
CURRENT_USER() poate înlocui numele contului în GRANT, SET PASSWORD, DROP USER și altele.
SHOW GRANTS FOR CURRENT_USER();
Rezultat în MySQL
+----------------------------------------------------------+
| Grants for ana@% |
+----------------------------------------------------------+
| GRANT USAGE ON *.* TO `ana`@`%` |
| GRANT SELECT, INSERT, UPDATE ON `magazin`.* TO `ana`@`%` |
+----------------------------------------------------------+
Greșeli frecvente
- Compari
CURRENT_USER()cuUSER()ca să verifici dacă cineva este „autentificat corect”. Diferența este normală pentru conturile cu%în gazdă.
Comenzi înrudite
USER(): Returnează utilizatorul și calculatorul de pe care s-a conectat clientul, ca text „nume@gazdă”.CURRENT_ROLE(): Returnează rolurile active în sesiunea curentă, separate prin virgulă, sau NONE.ROLES_GRAPHML(): Returnează un document XML (GraphML) cu conturile, rolurile și legăturile dintre ele.