본문 바로가기
프로그래밍/database

MariaDB(MySQL) 외부 접근 허용|금지하기

by 신일석 2019. 5. 9.

MariaDB(MySQL) 외부 접근 허용|금지하기

개요

데이터베이스를 처음 설치하면 내부(localhost)에서만 접근이 가능합니다.
HeidiSQL과 같은 데이터베이스 관리툴에서 외부(카페24 가상서버)에 운영중인 데이터베이스에 연결하려면, 서버에 외부 접근에 필요한 설정이 필요합니다.

사용환경

외부 서버의 데이터베이스에 접근하기 위한 관문(조건)

  1. 방화벽 접근 정책 추가
  2. database의 접근 권한 부여
  3. mysqld의 Listen IP대역 변경

외부 접근 허용하기

방화벽 접근 정책 추가

방화벽을 운영중인 경우에만 해당합니다.

카페24 가상서버는 관리자 페이지에서 방화벽을 관리합니다.
방화벽이 활성화(on)되어 있다면 'Inbound 접근 정책'에 3306 포트를 추가합니다.

추가내용

  • 이름: mariadb
  • 프로토콜: tcp
  • 포트: 3306

아래와 같이 설정내용이 추가됩니다.

NO 이름 프로토콜 포트 접근허용 IP 접근 차단 IP 관리
3 mariadb tcp 3306 ANY [Rule 삭제] [차단IP추가]

database의 접근 권한

데이터베이스 사용 계정은 root 보다 '다른 계정'을 만들어 사용하는 것이 안전합니다.

  1. 외부 접근 계정을 추가합니다.

모든 IP에 대해 접근을 허용하기 위해 '%'를 사용했습니다.
특정 IP대역에 대해 허용하려면 '111.222.%'를 사용합니다.

CREATE USER 계정이름@'%' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON 데이터베이스이름.* TO 계정이름@'%';
FLUSH PRIVILEGES;

마지막에 FLUSH PRIVILEGES는 현재 실행중인 세션에 변경 내용을 적용하기 위해 실행합니다.

  1. 확인

mysql에 로그인한 후 아래 명령어를 실행합니다.

mysql> SELECT Host,User,password FROM mysql.user;

mysqld의 Listen IP대역 변경

  1. 현재 상태를 확인한다.
$ netstat -ntlp | grep mysqld

tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      19688/mysqld
  1. 원본 백업
sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf_org
  1. Listen IP대역 변경
    이래 내용을 찾아 바꿔줍니다.

bind-address = 127.0.0.1 <= 수정 전
bind-address = 0.0.0.0 <= 수정 후

sudo vim /etc/mysql/my.cnf
bind-address        = 0.0.0.0
  1. mysql 재시동
$ sudo /etc/init.d/mysql restart
$ netstat -ntlp | grep mysqld

tcp        0      0 0.0.0.0:3306          0.0.0.0:*               LISTEN      19688/mysqld

외부 접근 금지

위에서 지정한 내용을 모두 해제합니다.

방화벽 접근 정책 삭제

Rule삭제 버튼으로 추가 했던 Inbound 접근 정책을 삭제합니다.

MariaDB 사용자 계정 삭제

외부 접근을 위해 추가된 계정이라면 해당 계정을 삭제합니다.

DELETE FROM mysql.user WHERE Host='%' AND User='계정이름';
FLUSH PRIVILEGES;

mysqld의 Listen IP대역 변경 취소

  1. 원본 복원
sudo cp /etc/mysql/my.cnf_org /etc/mysql/my.cnf

vim을 이용해 직접 수정해도 됩니다.

  1. mysql 재시동
$ sudo /etc/init.d/mysql restart
$ netstat -ntlp | grep mysqld

tcp        0      0 0.0.0.0:3306          0.0.0.0:*               LISTEN      19688/mysqld

참고

'프로그래밍 > database' 카테고리의 다른 글

관계 대수의 기본 연산자  (0) 2019.06.02