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]