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()와 함께 활용하거나, 로그 감사나 접속자 정보 조회 시 유용하게 사용할 수 있습니다.