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

MySQL 사용자 호스트 목록 조회 방법 완벽 정리

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로 제한하는 것이 좋습니다.