MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

MariaDB SYSTEM_USER() expliqué

Dans MariaDB, SYSTEM_USER() est un synonyme de USER() une fonction. Il renvoie le nom d'utilisateur et le nom d'hôte MariaDB actuels, donnés lors de l'authentification auprès de MariaDB.

Syntaxe

La syntaxe ressemble à ceci :

SYSTEM_USER()

Aucun argument n'est requis ou accepté.

Exemple

Voici un exemple pour illustrer :

SELECT SYSTEM_USER();

Résultat :

+------------------+
| SYSTEM_USER()    |
+------------------+
| [email protected] |
+------------------+

SYSTEM_USER() contre CURRENT_USER()

Il existe également une autre fonction appelée CURRENT_USER() qui fait une chose similaire. Cependant, il ne renvoie pas toujours le même résultat que SYSTEM_USER() .

Par exemple, si nous nous connectons en utilisant anonymous :

mariadb --user="anonymous"

Ensuite, exécutez SYSTEM_USER() et CURRENT_USER() :

SELECT 
    SYSTEM_USER(),
    CURRENT_USER;

Résultat :

+---------------------+--------------+
| SYSTEM_USER()       | CURRENT_USER |
+---------------------+--------------+
| [email protected] | @localhost   |
+---------------------+--------------+

Mais si nous revenons à notre session précédente (dans la fenêtre de terminal d'origine), chaque fonction renvoie les mêmes résultats :

SELECT 
    SYSTEM_USER(),
    CURRENT_USER;

Résultat :

+------------------+------------------+
| SYSTEM_USER()    | CURRENT_USER     |
+------------------+------------------+
| [email protected] | [email protected] |
+------------------+------------------+

Aucun argument n'est accepté

Passer tous les arguments à SYSTEM_USER() génère une erreur :

SELECT SYSTEM_USER(123);

Résultat :

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

Instructions utilisant SYSTEM_USER() fonction (ou USER() et SESSION_USER() ) ne sont pas sûrs pour la réplication au niveau de l'instruction.