Existe-t-il un moyen de connaître votre nom d'utilisateur actuel dans mysql?

88

Je voudrais savoir s'il existe un moyen pour une requête mysql de renvoyer le nom d'utilisateur de l'utilisateur qui émet la requête.

Est-ce possible?

user1090729
la source

Réponses:

77

Essayez la CURRENT_USER()fonction. Cela renvoie le nom d'utilisateur que MySQL a utilisé pour authentifier votre connexion client. C'est ce nom d'utilisateur qui détermine vos privilèges.

Cela peut être différent du nom d'utilisateur qui a été envoyé à MySQL par le client (par exemple, MySQL peut utiliser un compte anonyme pour authentifier votre client, même si vous avez envoyé un nom d'utilisateur). Si vous voulez que le nom d'utilisateur que le client envoie à MySQL lors de la connexion, utilisez USER()plutôt la fonction.

La valeur indique le nom d'utilisateur que vous avez spécifié lors de la connexion au serveur et l'hôte client à partir duquel vous vous êtes connecté. La valeur peut être différente de celle de CURRENT_USER ().

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user

scotru
la source
Merci pour votre réponse, si je lis ceci correctement, l'avantage d'utiliser CURRENT_USER () au lieu de USER () est que CURRENT_USER () ne renverra que les utilisateurs authentifiés?
user1090729
Fondamentalement, le client peut spécifier un utilisateur à utiliser pour l'authentification - mais cet utilisateur spécifique peut ne pas avoir de droits d'octroi sur une table. Pourtant, l'accès peut toujours être accordé en raison de droits anonymes sur la table. Cette fonction renvoie l'utilisateur dans l'octroi des droits qui a été utilisé pour authentifier l'utilisateur (peut-être anonyme) plutôt que l'utilisateur spécifié par le client. Il y a un bon exemple dans les documents.
scotru
1
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_USER()' at line 1
Utilisateur
15
Vous êtes-vous souvenu du SELECT dans votre requête, c'est-à-dire: SELECT CURRENT_USER (); Postez votre requête.
scotru
1
J'ai essayé ceci pour tester et je CURRENT_USER()n'étais pas correct pour la question "Y a-t-il un moyen de connaître * votre * nom d'utilisateur actuel dans mysql?". La réponse était "USER ()", qui "renvoie l'utilisateur MySQL actuel" ( dev.mysql.com/doc/refman/5.7/en/… ). Vous devriez mettre à jour votre réponse pour être plus complète, c'est beaucoup trop court.
James Wilkins
87

Essayez de courir soit

SELECT USER();

ou

SELECT CURRENT_USER();

Cela peut parfois être différent, USER () retournera par quel login vous avez tenté de vous authentifier et CURRENT_USER () retournera comment vous avez été autorisé à vous authentifier.

Petr Mensik
la source
18

Utilisez cette requête:

SELECT USER();

Ou

SELECT CURRENT_USER;
Mihai
la source
3

pour imprimer l'utilisateur actuel qui utilise la base de données

select user();

ou

select current_user();
Prashanthhh Kumarr
la source
3
Je n'aime pas beaucoup votre réponse, non seulement elle n'ajoute rien de nouveau à ce qui a été précédemment répondu, mais votre réponse manque la partie la plus importante: la différence entre ces deux fonctions.
Jonathan Parent Lévesque
2
Dans un programme ou une vue stocké, CURRENT_USER () renvoie le compte de l'utilisateur qui a défini l'objet (tel que donné par sa valeur DEFINER) sauf s'il est défini avec la caractéristique SQL SECURITY INVOKER. Dans ce dernier cas, CURRENT_USER () retourne l'appelant de l'objet. Les déclencheurs et événements n'ont pas d'option pour définir la caractéristique SQL SECURITY, donc pour ces objets, CURRENT_USER () renvoie le compte de l'utilisateur qui a défini l'objet. Pour renvoyer l'appelant, utilisez USER () ou SESSION_USER (). dev.mysql.com/doc/refman/5.5/en/string-functions.html
Jonathan Parent Lévesque
personne n'a le temps de lire toute l'histoire de ces fonctions, et personne ne vous a demandé d'explication sur ces fonctions, la question principale était de savoir comment trouver un nom d'utilisateur dans mysql, il n'a pas demandé à wat les différences de ces deux déclarations. et il n'y a rien à ajouter de nouveau à la réponse existante, car c'est la seule réponse, en répondant, il gagne la confiance de l'utilisateur que c'est la réponse.
Prashanthhh Kumarr
2

Vous pouvez également utiliser: mysql> select user, host from mysql.user;

+---------------+-------------------------------+
| user          | host                          |
+---------------+-------------------------------+
| fkernel       | %                             |
| nagios        | %                             |
| readonly      | %                             |
| replicant     | %                             |
| reporting     | %                             |
| reporting_ro  | %                             |
| nagios        | xx.xx.xx.xx                 |
| haproxy_root  | xx.xx.xx.xx
| root          | 127.0.0.1                     |
| nagios        | localhost                     |
| root          | localhost                     |
+---------------+-------------------------------+
Ashish Karpe
la source
1

Vous pouvez trouver le nom d'utilisateur actuel avec la fonction CURRENT_USER () dans MySQL.

pour Ex: SELECT CURRENT_USER();

Mais CURRENT_USER()ne renverra pas toujours l'utilisateur connecté. Donc, si vous souhaitez que l'utilisateur soit connecté, utilisez à la SESSION_USER()place.

heisenbug47
la source