[Alex] 데이터 장인의 블로그

[MySQL] 접속 허용 IP 설정하기 본문

SQL

[MySQL] 접속 허용 IP 설정하기

Alex, Yoon 2021. 10. 12. 22:06

MySQL을 내부망에서만 사용한다면 이 글은 안읽으셔도 됩니다. 

 

해당 경우는 나의 서버(Ubuntu or CentOS)의 MySQL DB의 접근권한을 특정 IP에만 허용(방화벽 오픈)하기 위한 방법을 정리한 내용입니다. 

아직 Linux 서버에 MySQL을 설치하지 않았다면 이전 포스팅을 참고하시면 됩니다. 

2021.10.12 - [SQL] - [MySQL] Linux 환경 세팅

 

1. 계정 생성 및 권한 부여

  1. cd/etc/mysql/mysql.conf.d 로 이동. (vi cd/etc/mysql/mysql.conf.d/mysqld.cnf )
  2. bind-address 127.0.0.1 가 적힌줄 맨앞에 # 를 넣어 주석처리 합니다. :wq 로 저장
  3. mysql 접속 
  4. 외부접속 허용 sql문 입력 (user18 사용자 생성 및 test1 데이터베이스의 모든 권한 부여)
mysql> create user 'user18'@'%' identified by 'user18';
mysql> grant all privileges on test1.* to 'user18'@'%' with grant option;
mysql> exit

# mysql 재시작.
sudo service mysql restart

 

 

 

2. ufw allow 명령어로 방화벽 Port 오픈 

# 3306 포트 오픈
sudo ufw allow out 3306/tcp
sudo ufw allow in 3306/tcp

# mysql 재시작 
sudo service mysql restart

이로써 사용자의 이름과 패스워드만 안다면 모든 ip에서 MySQL로의 접속이 가능합니다. 

 

3. ufw port 및 ip 설정으로 방화벽 접속 제한

만약 일부 ip에서만 접속이 허용하려면, ufw 명령어 (Ubuntu에 한함) 를 사용하여 방화벽 오픈을 수행합니다. 

# ufw 활성화 수행 
sudo ufw enable

# ufw 상태 확인
sudo ufw status verbose

특정 ip에서 3306 포트로의 접속 허용

sudo ufw allow from [ 허용할 IP주소 입력 ] to any port [ 허용할 포트 ]
ex) sudo ufw allow from 192.168.0.100 to any port 3306

ufw 설정 이후 접속을 시도해보면 성공하는 것을 알 수 있습니다. (단, 해당 ip에서 접근했을 때만 허용됩니다.)

 

 

4. 방화벽 규칙을 삭제하는 방법

지정했던 규칙을 삭제하고 싶을 때, 사용하는 방법입니다. 

 

# 모든 방화벽 규칙 및 번호 목록을 제공합니다. 
sudo ufw status numbered

# 제거할 규칙의 번호를 입력합니다. 
sudo ufw delete [제거할 규칙 번호]

 

 

반응형
Comments