MySQL에서 등록된 사용자 계정과 각 계정의 접속 호스트를 확인해야 할 때가 있습니다. 이 글에서는 mysql.user 테이블을 활용해 MySQL 사용자 목록과 호스트 정보를 손쉽게 조회하는 방법을 단계별로 소개합니다.
1단계: MySQL 사용자 계정 목록 조회하기
MySQL의 모든 사용자 계정은 mysql.user 테이블에 저장됩니다. 이 테이블에서 user 컬럼만 선택하면 전체 사용자 계정 목록을 간단히 확인할 수 있습니다.
사용자 목록을 가져오는 기본 쿼리는 다음과 같습니다.
mysql> select user from mysql.user;
위 쿼리를 실행하면 아래와 같이 시스템에 등록된 모든 사용자가 출력됩니다.
+------------------+ | user | +------------------+ | Manish | | mysql.infoschema | | mysql.session | | mysql.sys | | root | | am | +------------------+ 6 rows in set (0.06 sec)
2단계: 사용자와 호스트 정보 함께 조회하기
mysql.user 테이블에는 host 컬럼도 포함되어 있어, 어떤 호스트에서 해당 사용자가 접속할 수 있는지 함께 확인할 수 있습니다. user 컬럼과 host 컬럼을 동시에 조회하는 쿼리는 다음과 같습니다.
mysql> select user,host from mysql.user;
실행 결과로 사용자 이름과 허용된 호스트가 함께 표시됩니다.
+------------------+-----------+ | user | host | +------------------+-----------+ | Manish | % | | mysql.infoschema | % | | mysql.session | % | | mysql.sys | % | | root | % | | am | localhost | +------------------+-----------+ 6 rows in set (0.00 sec)
호스트 값의 의미 이해하기
조회 결과에서 호스트 컬럼에 표시되는 값은 다음과 같은 의미를 가집니다.
- % (퍼센트 기호): 모든 호스트에서의 접속을 허용한다는 의미입니다. 즉, 해당 사용자는 어느 서버에서든 원격으로 접속할 수 있습니다.
- localhost: 오직 MySQL 서버가 설치된 로컬 머신에서만 접속이 가능하다는 의미입니다. 위 예제의
am사용자는 로컬 접속만 허용됩니다.
참고 사항
MySQL 8.0부터 mysql.infoschema, mysql.session, mysql.sys 같은 내부 시스템 계정이 기본적으로 생성되므로, 조회 결과에 이러한 계정이 나타나는 것은 정상입니다. 보안 관점에서 root 계정의 호스트가 %로 설정되어 있다면 원격 접속이 허용된 상태이므로, 필요 없다면 특정 IP로 제한하는 것이 좋습니다.