В MariaDB, SYSTEM_USER()
е синоним на USER()
функция. Връща текущото потребителско име на MariaDB и име на хост, дадени при удостоверяване на MariaDB.
Синтаксис
Синтаксисът е така:
SYSTEM_USER()
Не се изискват или приемат аргументи.
Пример
Ето пример за демонстрация:
SELECT SYSTEM_USER();
Резултат:
+------------------+ | SYSTEM_USER() | +------------------+ | [email protected] | +------------------+
SYSTEM_USER()
срещу CURRENT_USER()
Има и друга функция, наречена CURRENT_USER()
това прави подобно нещо. Той обаче не винаги връща същия резултат като SYSTEM_USER()
.
Например, ако се свържем с помощта на anonymous
:
mariadb --user="anonymous"
След това стартирайте SYSTEM_USER()
и CURRENT_USER()
:
SELECT
SYSTEM_USER(),
CURRENT_USER;
Резултат:
+---------------------+--------------+ | SYSTEM_USER() | CURRENT_USER | +---------------------+--------------+ | [email protected] | @localhost | +---------------------+--------------+
Но ако се върнем към предишната ни сесия (в оригиналния прозорец на терминала), всяка функция връща същите резултати:
SELECT
SYSTEM_USER(),
CURRENT_USER;
Резултат:
+------------------+------------------+ | SYSTEM_USER() | CURRENT_USER | +------------------+------------------+ | [email protected] | [email protected] | +------------------+------------------+
Не се приемат аргументи
Подаване на всякакви аргументи към SYSTEM_USER()
води до грешка:
SELECT SYSTEM_USER(123);
Резултат:
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
Изявления, използващи SYSTEM_USER()
функция (или USER()
и SESSION_USER()
) не са безопасни за репликация на ниво израз.