호스트 이름 생략 후 사용자 계정 생성하기
MySQL에서 사용자 계정을 생성할 때 호스트 이름(host) 부분을 생략하면, MySQL은 이를 그대로 허용하며 해당 사용자가 모든 호스트에서 서버에 접속할 수 있도록 설정됩니다.
기본적인 문법은 다음과 같습니다.
USE mysql;
CREATE USER user_name IDENTIFIED BY password;
각 구성 요소의 의미는 다음과 같습니다.
- user_name: 생성하려는 사용자(계정)의 이름입니다.
- password: 해당 사용자 계정에 설정할 비밀번호입니다. MySQL 서버는 이 비밀번호를 통해 사용자를 식별합니다.
예제 1: 호스트 이름만 생략하는 경우
다음 예제에서는 호스트 이름을 생략하여 remote라는 사용자를 생성합니다.
mysql> CREATE USER remote IDENTIFIED BY 'password123';
Query OK, 0 rows affected (0.00 sec)
이렇게 생성된 사용자 remote는 어떤 호스트에서도 서버에 접속할 수 있습니다. 실제로 권한을 조회해 보면 호스트 부분이 %(와일드카드)로 지정되어 있는 것을 확인할 수 있습니다.
mysql> SHOW GRANTS FOR remote@'%';
+------------------------------------+
| Grants for remote@% |
+------------------------------------+
| GRANT USAGE ON *.* TO 'remote'@'%' |
+------------------------------------+
1 row in set (0.00 sec)
예제 2: 호스트 이름과 비밀번호를 모두 생략하는 경우
사용자 계정은 호스트 이름뿐만 아니라 비밀번호까지 생략하여 생성할 수도 있습니다. 다음 예제에서는 비밀번호 없이 hello라는 사용자를 생성합니다.
mysql> CREATE USER hello;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW GRANTS FOR hello@'%';
+-----------------------------------+
| Grants for hello@% |
+-----------------------------------+
| GRANT USAGE ON *.* TO 'hello'@'%' |
+-----------------------------------+
1 row in set (0.00 sec)
참고: 보안상 주의사항
호스트 이름을 생략하면 해당 계정이 모든 호스트(%)에서 접속 가능해지므로, 외부에 노출되는 운영 환경에서는 보안 위험이 커질 수 있습니다. 따라서 실무 환경에서는 'user_name'@'localhost' 또는 특정 IP 주소처럼 접속 범위를 명확히 제한하는 것이 안전합니다.