W MariaDB, SYSTEM_USER()
jest synonimem USER()
funkcjonować. Zwraca bieżącą nazwę użytkownika MariaDB i nazwę hosta, podaną podczas uwierzytelniania w MariaDB.
Składnia
Składnia wygląda tak:
SYSTEM_USER()
Żadne argumenty nie są wymagane ani akceptowane.
Przykład
Oto przykład do zademonstrowania:
SELECT SYSTEM_USER();
Wynik:
+------------------+ | SYSTEM_USER() | +------------------+ | [email protected] | +------------------+
SYSTEM_USER()
vs CURRENT_USER()
Jest też inna funkcja o nazwie CURRENT_USER()
to robi podobną rzecz. Jednak nie zawsze zwraca ten sam wynik, co SYSTEM_USER()
.
Na przykład, jeśli łączymy się za pomocą anonymous
:
mariadb --user="anonymous"
Następnie uruchom SYSTEM_USER()
i CURRENT_USER()
:
SELECT
SYSTEM_USER(),
CURRENT_USER;
Wynik:
+---------------------+--------------+ | SYSTEM_USER() | CURRENT_USER | +---------------------+--------------+ | [email protected] | @localhost | +---------------------+--------------+
Ale jeśli wrócimy do poprzedniej sesji (w oryginalnym oknie terminala), każda funkcja zwróci te same wyniki:
SELECT
SYSTEM_USER(),
CURRENT_USER;
Wynik:
+------------------+------------------+ | SYSTEM_USER() | CURRENT_USER | +------------------+------------------+ | [email protected] | [email protected] | +------------------+------------------+
Żadne argumenty nie są akceptowane
Przekazywanie dowolnych argumentów do SYSTEM_USER()
powoduje błąd:
SELECT SYSTEM_USER(123);
Wynik:
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
Wyciągi z użyciem SYSTEM_USER()
funkcja (lub USER()
i SESSION_USER()
) nie są bezpieczne dla replikacji na poziomie instrukcji.