본문 바로가기

Work Box (Ubuntu Server)/Ubuntu - MySQL

[Ubuntu][MySQL] 외부에서 Workbench로 DB 접속

 

Ubuntu 서버에 MySQL 설치를 완료했다.

 

그럼 외부에서 내 서버 MySQL DB 에 접속해보자.

 

먼저 port 번호를 변경하고 외부에서 접속할 수 있도록 서버에 MySQL 설정을 변경할 것이다.

 

1. MySQL 설정 변경

Ubuntu 에 접속.

$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

상기 명령어로 MySQL 설정 파일에 들어가 설정을 아래와 같이 변경해주자.

// 주석 해제 후 수정
port = 3333

// 주석처리
# bind-address = 127.0.0.1
# mysqlx-bind-address = 127.0.0.1

포트변경을 완료했고 외부 접속을 위해 서버 local 에 binding 되어있는 bind-address 들을 모두 주석처리 해주었다.

 

2. MySQL 재시작

$ sudo service mysql restart

$ sudo service mysql status

status 확인하여 active 상태까지 확인.

 

3. 포트 방화벽 설정

MySQL 의 기본 포트는 방화벽을 닫아주고 외부 접속용 포트인 3333 포트에 대한 방화벽을 해제해주자.

$ sudo ufw deny 3306 && sudo ufw allow 3333

&& 을 사용해 두개의 명령문을 한번에.

 

그다음 외부 workbench 에서 접속 test 수행 시 Connection Success 뜨면 성공.


추가적으로..

4. % 가 아닌 특정 외부 IP 에만 접속 권한 부여

 

여러 외부 아이피( % )가 아닌 특정 아이피만 상기 DB 에 접속하도록 설정해줄 수 있다.

 

먼저 Ubuntu 서버에 접속해준다.

 

그다음 root 계정으로 MySQL 에 접속.

$ sudo mysql -u root -p

 

그다음 특정 아이피로 권한 부여. 이때 외부 workbench 를 사용하는 로컬의 public ip 를 알아야 한다.

 

네이버 접속 후 내 아이피 검색하면 IP 주소 조회 가능.

 

그다음 아래 SQL 을 통해 상기 IP 를 등록.

CREATE USER '<계정 ID>'@'123.123.123.%' IDENTIFIED BY '비밀번호';
# or
CREATE USER '<계정 ID>'@'123.123.123.123' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON *.* to '<계정 ID>'@'123.123.123.%';
# or
GRANT ALL PRIVILEGES ON *.* to '<계정 ID>'@'123.123.123.123';

 

이러면 특정 IP 에 대한 접속만 허용된다.

# 유저 보기 
USE mysql;
SELECT user, host FROM user;

# 유저 권한 보기
SHOW GRANTS FOR '<계정 ID>'@'123.123.123.%';
SHOW GRANTS FOR CURRENT_USER;