Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 사용자 이름으로부터 사용자 ID만 추출하는 방법

MySQL에서 현재 접속 중인 사용자 정보는 user@host 형태로 표시됩니다. 이때 사용자 ID 부분만 분리해서 얻고 싶다면 SUBSTRING_INDEX() 함수를 활용하면 됩니다. 이 함수는 문자열을 특정 구분자를 기준으로 잘라 원하는 부분만 반환해 줍니다.

1. 현재 사용자 확인하기

먼저 USER() 함수로 현재 로그인한 사용자를 확인해 보겠습니다.

mysql> SELECT USER();

실행 결과는 다음과 같습니다.

+----------------+
| USER()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

2. 사용자 ID만 추출하기

사용자 ID만 얻으려면 구분자 '@'를 기준으로 앞쪽(첫 번째) 부분을 가져오면 됩니다.

mysql> SELECT SUBSTRING_INDEX(USER(),'@',1);

실행 결과입니다.

+-------------------------------+
| SUBSTRING_INDEX(USER(),'@',1) |
+-------------------------------+
| root                          |
+-------------------------------+
1 row in set (0.00 sec)

3. 호스트명만 추출하기

반대로 호스트명이 필요한 경우에는 세 번째 인자에 음수(-1)를 지정하면 뒤쪽 부분을 반환합니다.

mysql> SELECT SUBSTRING_INDEX(USER(),'@',-1);

실행 결과입니다.

+--------------------------------+
| SUBSTRING_INDEX(USER(),'@',-1) |
+--------------------------------+
| localhost                      |
+--------------------------------+
1 row in set (0.00 sec)

참고: SUBSTRING_INDEX() 함수의 동작 방식

SUBSTRING_INDEX(str, delim, count)는 다음과 같이 동작합니다.

  • count가 양수일 경우: 구분자를 기준으로 왼쪽부터 count번째 등장하는 위치까지의 문자열을 반환합니다.
  • count가 음수일 경우: 구분자를 기준으로 오른쪽부터 count번째 등장하는 위치까지의 문자열을 반환합니다.

따라서 SUBSTRING_INDEX(USER(), '@', 1)은 '@' 앞의 사용자 ID를, SUBSTRING_INDEX(USER(), '@', -1)은 '@' 뒤의 호스트명을 반환하게 됩니다. 이 방법은 CURRENT_USER()와 함께 활용하거나, 로그 감사나 접속자 정보 조회 시 유용하게 사용할 수 있습니다.