In MariaDB, SYSTEM_USER()
is een synoniem voor de USER()
functie. Het retourneert de huidige MariaDB-gebruikersnaam en hostnaam, gegeven bij authenticatie bij MariaDB.
Syntaxis
De syntaxis gaat als volgt:
SYSTEM_USER()
Er zijn geen argumenten vereist of geaccepteerd.
Voorbeeld
Hier is een voorbeeld om te demonstreren:
SELECT SYSTEM_USER();
Resultaat:
+------------------+ | SYSTEM_USER() | +------------------+ | [email protected] | +------------------+
SYSTEM_USER()
vs CURRENT_USER()
Er is ook een andere functie genaamd CURRENT_USER()
dat doet iets soortgelijks. Het geeft echter niet altijd hetzelfde resultaat als SYSTEM_USER()
.
Als we bijvoorbeeld verbinding maken via anonymous
:
mariadb --user="anonymous"
Voer vervolgens SYSTEM_USER()
. uit en CURRENT_USER()
:
SELECT
SYSTEM_USER(),
CURRENT_USER;
Resultaat:
+---------------------+--------------+ | SYSTEM_USER() | CURRENT_USER | +---------------------+--------------+ | [email protected] | @localhost | +---------------------+--------------+
Maar als we teruggaan naar onze vorige sessie (in het oorspronkelijke terminalvenster), geeft elke functie dezelfde resultaten:
SELECT
SYSTEM_USER(),
CURRENT_USER;
Resultaat:
+------------------+------------------+ | SYSTEM_USER() | CURRENT_USER | +------------------+------------------+ | [email protected] | [email protected] | +------------------+------------------+
Er worden geen argumenten geaccepteerd
Argumenten doorgeven aan SYSTEM_USER()
resulteert in een fout:
SELECT SYSTEM_USER(123);
Resultaat:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '123)' at line 1
Verklaringen met de SYSTEM_USER()
functie (of USER()
en SESSION_USER()
) zijn niet veilig voor replicatie op instructieniveau.