DB Server/MySQL

Mysql Remote 설정

로멘틱가이 2015. 5. 5. 22:36

Web 서버와 Mysql Server를 분리하여 운영할 경우 Web 서버와 Mysql Server간 연결을 할 수 있도록 Setting을 해야합니다.

해당 방법에 대해 알아보도록 하겠습니다.

 

1. Bind Address 설정

(1) Configuration File 위치 확인

> mysqld --verbose --help | grep -A 1 'Defaut options'

해당 명령어 수행 시 아래 Default options 밑에 다음 파일을 읽는다고 명시되어 있습니다.

해당 순서대로 Mysql에 대한 설정을 읽어 옵니다.

확인 결과 /etc/mysql/my.cnf 파일 만 존재 합니다.

해당 파일을 보면 includedir에 두 개의 폴더가 존재하며 해당 폴더 중 /etc/mysql/mysql.conf.d/ 폴더만 존재 합니다. 해당 폴더로 가봅니다.

 

해당 폴더에 있는 파일 중 mysqld.cnf 파일을 열어보면 아래와 같이 bind-address가 있습니다.

 my.cnf에 해당 내용이 있는 줄 알고 한참을 해매고 찾은 내용입니다.

내용을 보면 port가 3306을 사용한다고 되어 있습니다. 해당 port 내용은 방화벽 설정 시 알아보도록 하겠습니다.

 Mysql은 로컬에서 기동된다는 가정하에 DB 를 127.0.0.1로 기동하게 됩니다.

만약 Remote에서 DB를 연결해야하는 경우 기동되는 IP를 0.0.0.0으로 변경해야 합니다.

 

(2) Bind Address 변경

netstat로 3306 포트로 확인해보면 디폴트로 127.0.0.1로 서비스가 기동되고 있음을 확인할 수 있습니다.

 

위의 bind-address를 0.0.0.0으로 변경 후 mysql 서비스를 restart하면 우리가 원했던 0.0.0.0으로 변경됨을 확인할 수 있습니다.

 

2. 방화벽 Open

(1) 방화벽 Port Settng

3306 포트를 사용하기 때문에 3306 / TCP 를 오픈합니다.

 

3. Web Server에 연동 Module 설치

(1) php5-mysql 모듈 설치

apt-get 을 사용하여 php5-mysql 을 설치합니다.

 

4. Mysql 설정

(1) 데이터베이스 설정

> mysql -u root -p

mysql 로그인

 

> CREATE DATABASE wordpress;

wordpress Database 생성

 

> CREATE USER wordpress@localhost;

User 생성

> Drop user wordpress@localhost

User 삭제

 

> SET PASSWORD FOR wordpress@localhost=PASSWORD("<Password>");'

패스워드 설정

 

>GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@localhost IDENTIFIED BY '<Password>';

wordpress Database에 wordpress 유저에 대해 모든 권한 할당

 

> Select user, host from user;

user별 권한 할당 host 확인

 

> FLUSH PRIVILEGES;

Mysql 리플레쉬

(2) Remote 접속 Test

mysql -u [user 명] -p [Password] -h [서버 IP]