MySQL에서 특정 사용자 계정이 모든 호스트에서 접속할 수 있도록 허용하는 것은 충분히 가능합니다. 핵심은 @ 문자 뒤에 % 와일드카드(wildcard) 문자를 지정하여 사용자를 생성하는 것입니다.
기본 문법
USE mysql;
CREATE USER user_name@'%' IDENTIFIED BY password;
각 구성 요소의 의미는 다음과 같습니다.
- user_name: 계정을 생성하고자 하는 사용자의 이름입니다.
- password: 해당 사용자 계정에 설정할 비밀번호입니다. MySQL 서버는 이 비밀번호를 통해 사용자를 식별하고 인증합니다.
예제
다음 예제에서는 % 와일드카드를 사용하여 Gaurav라는 사용자를 생성함으로써, 어떤 호스트에서도 접속할 수 있는 계정을 만들어 보겠습니다.
mysql> USE mysql
Database changed
mysql> CREATE USER Gaurav@'%' IDENTIFIED BY 'password123';
Query OK, 0 rows affected (0.00 sec)
계정이 정상적으로 생성되었다면, 아래 쿼리로 새 사용자 계정 Gaurav@'%'에 부여된 권한을 확인할 수 있습니다.
mysql> SHOW GRANTS FOR Gaurav@'%';
+------------------------------------+
| Grants for Gaurav@% |
+------------------------------------+
| GRANT USAGE ON *.* TO 'Gaurav'@'%' |
+------------------------------------+
1 row in set (0.00 sec)
GRANT USAGE ON *.*는 해당 계정이 MySQL 서버에 로그인할 수 있음을 의미하지만, 아직 데이터베이스나 테이블에 대한 실질적인 작업 권한은 없다는 뜻입니다. 필요에 따라 GRANT 문을 사용해 적절한 권한을 추가로 부여해야 합니다.
보안 관련 주의 사항
% 와일드카드를 사용하면 외부의 모든 IP 주소에서 해당 계정으로 접속이 가능해집니다. 편리하지만 그만큼 보안 위험도 커지므로, 다음 사항을 반드시 고려해야 합니다.
- 강력하고 복잡한 비밀번호를 설정하세요.
- 가능하다면
%대신 특정 IP 주소나 대역(예:192.168.1.%)을 지정하여 접속 범위를 제한하는 것이 좋습니다. - 운영 환경에서는 방화벽 규칙과 함께 계정 권한을 최소화(최소 권한 원칙)하여 관리하세요.