본문 바로가기

리눅스

MySQL에서 특정 사용자가 특정 외부 IP 주소에서만 접속할 수 있도록 설정하는 방법

728x90

MySQL에서 특정 사용자가 특정 외부 IP 주소에서만 접속할 수 있도록 설정하는 방법

1. MySQL 서버에 로그인

mysql -u root -p

2. 사용자 생성 및 권한 부여

MySQL 서버에 원격으로 접속하기 위해 해당 사용자에게 원격 접속 권한을 부여해야 합니다.

CREATE USER 'dbtestuser'@'127.0.0.1' IDENTIFIED BY 'dbtestuser_password';
GRANT ALL PRIVILEGES ON *.* TO 'dbtestuser'@'192.168.56.%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

3. 사용자 확인

SELECT user, host FROM mysql.user;

이 명령을 사용하여 현재 등록된 사용자와 그들의 접근 호스트를 확인할 수 있습니다.

SELECT user, host FROM mysql.user WHERE user = 'dbtestuser';
mysql> SELECT user, host FROM mysql.user WHERE user = 'dbtestuser';
+------------+-----------+
| user       | host      |
+------------+-----------+
| dbtestuser | 127.0.0.1 |
+------------+-----------+
1 row in set (0.00 sec)
SELECT user, host FROM mysql.user WHERE user = 'dbtestuser' AND host = '127.0.0.1';
mysql> SELECT user, host FROM mysql.user WHERE user = 'dbtestuser' AND host = '127.0.0.1';
+------------+-----------+
| user       | host      |
+------------+-----------+
| dbtestuser | 127.0.0.1 |
+------------+-----------+
1 row in set (0.00 sec)
728x90

4. 사용자 권한 확인

SHOW GRANTS FOR 'your_user'@'your_host';

위 명령을 사용하여 특정 사용자의 권한을 확인할 수 있습니다.

SHOW GRANTS FOR 'dbtestuser'@'127.0.0.1';
mysql> SHOW GRANTS FOR 'dbtestuser'@'127.0.0.1';
+------------------------------------------------+
| Grants for dbtestuser@127.0.0.1                |
+------------------------------------------------+
| GRANT USAGE ON *.* TO `dbtestuser`@`127.0.0.1` |
+------------------------------------------------+
1 row in set (0.00 sec)

5. 사용자 권한 수정

특정 사용자의 접근을 제한하거나 확장하려면 다음과 같은 명령을 사용할 수 있습니다.

아래 예시에서는 your_user라는 사용자가 어떤 호스트에서든 접근할 수 있도록 했습니다.

  • 모든 호스트에서 접근 허용
GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'%' WITH GRANT OPTION;
  • 특정 호스트에서만 접근 허용
GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'specific_ip' WITH GRANT OPTION;
  • 현재 모든 접근을 제한
REVOKE ALL PRIVILEGES ON your_database.* FROM 'your_user'@'%' WITH GRANT OPTION;
  • 특정 호스트의 접근을 제한
REVOKE ALL PRIVILEGES ON your_database.* FROM 'your_user'@'specific_ip' WITH GRANT OPTION;
  • 변경사항 적용
FLUSH PRIVILEGES;

위 명령에서 your_database, your_user, specific_ip 등을 실제 사용자 및 데이터베이스 정보로 변경해야 합니다. 변경사항을 적용하려면 FLUSH PRIVILEGES;를 실행하세요.

6. MySQL 서버 재시작 (옵션)

MySQL 서버의 설정을 변경했다면, 변경사항이 적용되도록 MySQL 서버를 재시작할 수 있습니다.

sudo systemctl restart mysql

이제 특정 사용자의 접근 권한을 변경하거나 제한했습니다.

 

728x90