AWS에서 RDS를 사용하던 서버에 MySQL-Server로 옮기려고 설정하던 중이었다.

우선 MYSQL 설치를 했다. 이건 뭐 리눅스 계열 좀 해본 사람은 대충 알거라 생각한다. 설치는 다른 글 있다.

2021/02/01 - [IT/우분투서버] - [ubuntu server 20.04 LTS] MySQL 설치

근데 보안을 생각해서 우선 루트계정을 원격접속이 안되게 설정해놨다.

여기부터 계속 PC에서 서버 DB로 접속이 안된다.

문제점을 하나씩 살펴봤다. 정리해본 결과 몇가지가 된다. 나의 경우를 정리했다.

우선 편리를 위해 루트계정으로 했다. 설정 자체는 루트계정이 아닐경우 수정이 안되는 경우가 많고 sudo를 계속 치면서 pw를 치는게 번거롭다.

 

1. 방화벽 포트포워딩.

- 서버와 내가 사용하는 PC는 다른 IP이기 때문에 너무 당연한 거였다.

이 부분은 결정적인 원인은 아니다.

2. 우분투 IP 및 포트 개방.

- OS에서 포트가 개방 되어있는지 그리고 IP가 로컬로 되어있는지 확인을 했다.

netstat 명령어를 사용하면 된다. 

# netstat -tnlp

기본적으로 MySQL은 3306 포트를 사용한다. 

우선 Local Address를 살펴보면 3306포트가 127.0.0.1로 되어있는것을 확인할 수 있다. 그렇단 뜻은 로컬에서만 mysql을 접속 할 수 있다. 이건 mysql 설정을 바꿔주면 된다. 우선 맨끝에 프로그램 이름을 확인하자. mysqld 라고 되어있다. 이걸 기억한 후 mysql 폴더로 가야한다.

cd /etc/mysql
ls -a

mysql 폴더는 etc 밑에 있다. cd 명령어를 통해서 이동 후 ls 명령어를 통해서 폴더 안에 어떤게 있는지 확인한다.

여기서부터 문제가 많았다.

이 설정은 os 버전과 mysql 버전에 따라 설정 파일이 다를 수 있다. 나도 이 부분에서 굉장히 헤맸다. 어떤 사람은 my.conf , mysql.conf, mysqld.conf ... 어떤 사람은 이 폴더에서 찾는 사람도 있다. 많은 시도 끝에 해결했다. 우선 아까 프로그램이름이 mysqld 였는데 이 폴더 안에는 같은 이름의 cnf가 없었다.

그래서 mysql.conf.d 폴더로 이동했다. 그 안에 mysqld.cnf 파일이 있었다.

cd mysql.conf.d
ls -a
vi mysqld.cnf

vi로 mysqld.cnf 파일을 편집하자.

bind-address가 있다. 그걸 0.0.0.0으로 바꿔주자. 그리고 :wq를 입력하고 나오면 된다. 

수정했다면 mysql를 재실행한다.

service mysql restart

재실행했으면 아까 netstat 명령어로 IP가 제대로 설정됐는지 확인해보자

이렇게까지 했으면 이제 Mysql에서 user를 살펴봐야한다.

3. User 설정

mysql에 root 계정으로 접속한다.

mysql -u root -p

접속 한 후 데이터베이스를 선택한 후 user 테이블을 확인해보자.

mysql> use mysql;

mysql> select user,host from user;

user 테이블을 보면 host 컬럼에 localhost만 되어있다. 이 뜻은 외부 접속이 안된다.

그러면 user를 하나 생성해주자.

mysql> create user 'user'@'%' identified by '!QAZ2wsx';

'user'@'%'는 user는 user name이고 , % 는 외부의 모든 접근 허용이다.

여기까지 한다면 workbench에서 접속이 가능할 것이다.

+ Recent posts