mysql에서 현재 사용자 이름을 아는 방법이 있습니까?


90

mysql 쿼리가 쿼리를 실행하는 사용자의 사용자 이름을 반환하는 방법이 있는지 알고 싶습니다.

이것이 가능한가?

답변:


80

CURRENT_USER()기능을 사용해보십시오 . MySQL이 클라이언트 연결을 인증하는 데 사용한 사용자 이름을 반환합니다. 귀하의 권한을 결정하는 것은이 사용자 이름입니다.

이것은 클라이언트가 MySQL로 보낸 사용자 이름과 다를 수 있습니다 (예를 들어, MySQL은 사용자 이름을 보냈더라도 클라이언트를 인증하기 위해 익명 계정을 사용할 수 있습니다). 연결할 때 클라이언트가 MySQL로 보낸 사용자 이름을 원한다면 USER()대신 함수를 사용하십시오 .

이 값은 서버에 연결할 때 지정한 사용자 이름과 연결 한 클라이언트 호스트를 나타냅니다. 값은 CURRENT_USER ()의 값과 다를 수 있습니다.

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


답변 해 주셔서 감사합니다.이 글을 올바르게 읽고 있다면 USER () 대신 CURRENT_USER ()를 사용하는 이점은 CURRENT_USER ()가 인증 된 사용자 만 반환한다는 것입니다.
user1090729 2013-10-13

기본적으로 클라이언트는 인증에 사용할 사용자를 지정할 수 있지만 특정 사용자는 테이블에 대한 권한을 부여하지 못할 수 있습니다. 그러나 테이블에 대한 익명 권한으로 인해 액세스가 여전히 허용 될 수 있습니다. 이 함수는 클라이언트가 지정한 사용자가 아닌 사용자 (익명 일 수도 있음)를 인증하는 데 사용 된 권한 부여의 사용자를 반환합니다. 거기 문서에 좋은 예가 있습니다.
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
사용자

15
쿼리에서 SELECT를 기억 했습니까? 예 : SELECT CURRENT_USER (); 쿼리를 게시하십시오.
scotru

1
나는 이것을 테스트하기 위해 시도했지만 CURRENT_USER()" mysql에서 * your * 현재 사용자 이름 을 알 수있는 방법이 있습니까?"라는 질문에 맞지 않았습니다 . 대답은 "USER ()"였는데, "Returns the current MySQL user"( dev.mysql.com/doc/refman/5.7/en/… ). 답변을 더 완전하게 업데이트해야합니다. 너무 짧습니다.
James Wilkins

87

둘 중 하나를 실행하십시오

SELECT USER();

또는

SELECT CURRENT_USER();

때때로 다를 수 있습니다. USER () 는 인증을 시도한 로그인을 반환하고 CURRENT_USER () 는 실제로 인증이 허용 된 방법을 반환합니다.


18

이 쿼리를 사용하십시오.

SELECT USER();

또는

SELECT CURRENT_USER;


3

데이터베이스를 사용중인 현재 사용자를 인쇄하려면

select user();

또는

select current_user();

3
나는 당신의 대답이별로 마음에 들지 않습니다. 이전에 대답 한 것에 새로운 것을 추가하지 않을뿐만 아니라 당신의 대답은 가장 중요한 부분 인 두 기능의 차이를 놓치고 있습니다.
Jonathan Parent Lévesque

2
저장된 프로그램 또는 뷰 내에서 CURRENT_USER ()는 SQL SECURITY INVOKER 특성으로 정의되지 않은 경우 개체를 정의한 사용자의 계정 (DEFINER 값으로 제공됨)을 반환합니다. 후자의 경우 CURRENT_USER ()는 객체의 호출자를 반환합니다. 트리거 및 이벤트에는 SQL SECURITY 특성을 정의하는 옵션이 없으므로 이러한 오브젝트에 대해 CURRENT_USER ()는 오브젝트를 정의한 사용자의 계정을 리턴합니다. 호출자를 반환하려면 USER () 또는 SESSION_USER ()를 사용합니다. dev.mysql.com/doc/refman/5.5/en/string-functions.html
Jonathan Parent Lévesque

아무도 이러한 함수의 모든 역사를 읽을 시간이 없으며 아무도 이러한 함수에 대한 설명을 요청하지 않았습니다. 주된 질문은 mysql에서 사용자 이름을 찾는 방법이었고 두 진술의 차이점을 묻지 않았습니다. 기존 응답자에 새로 추가 할 항목이 없으며, 응답함으로써 사용자에게 이것이 답이라는 확신을 갖게됩니다.
Prashanthhh Kumarr

2

다음을 사용할 수도 있습니다. 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                     |
+---------------+-------------------------------+

1

MySQL의 CURRENT_USER () 함수로 현재 사용자 이름을 찾을 수 있습니다.

예 : SELECT CURRENT_USER();

그러나 CURRENT_USER()항상 로그인 한 사용자를 반환하지는 않습니다. 따라서 로그인 한 사용자를 원할 경우 SESSION_USER()대신 사용하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.