개다리 님께서 올려주신 글에 대한 답변입니다.달소님 혹시 관련 글을 적으셨을까요?https://svrforum.com/svr/54110 웹서버 DB서버를 각각 구축 후에 연동 방법에 대한 질문 안녕하세요? 서버포럼 덕분에 많이 배우고 즐겁게 작업중입니…개다리 | 2021.10.20
생각보다 글작성이 늦어지게 졌네요.
먼저 질문의 요지는
웹서버와 DB서버가 분리되어있고 웹서버에서 DB서버로의 접근이 가능해야 한다는점입니다.
테스트환경
Web서버 ip : 192.168.1.250
db서버 ip : 192.168.1.11
위와같다고 가정하겠습니다.
웹서버의 DB는 Mariadb(MySQL) 입니다.
1. MariaDB(MySQL) 환경설정하기
먼저 기본적으로 MariaDB에서의 접근 허용의 경우 로컬 ip만 잡혀있습니다.
/etc/mysql/my.cnf 혹은 아래 경로에서 bind-address를 찾아주세요.
vi /etc/mysql/mariadb.conf.d/50-server.cnf
이 bind-address 를 127.0.0.1이 아닌 접근을 허용할 ip로 적어주시면 됩니다.
0.0.0.0 의경우 어디서든 접근가능하게한다는 뜻입니다.
이 설정을 해주고 db를 재시작 시켜주세요.
netstat -lntp | grep 3306 으로 검색했을때 이렇게 0.0.0.0:3306으로 나와야합니다.
2. 특정 DB에 대해서 권한부여하기
이제 MariaDB콘솔에 접근해서 접근을 허용할 데이터베이스에 대한 설정을 진행해줘야합니다.
저는 test를 위한 db를 생성하고 진행해보겠습니다.
아래 과정에서 %의 경우 모든 ip에서 접근허용이라는 뜻으로 %대신 192.168.1.250과 같은 특정 웹서버 ip를 허용해주면
웹서버에서만 접근가능합니다.
test를 위한 db생성create database test;
계정 생성create user 'dalso'@'%' identified by 'password';
권한 부여 후 리로드grant all privileges on test.* to dalso@'%';
flush privileges;
이런식으로 접근을 허용해주면 웹서버에서 db서버로 접근이 됩니다.
혹 접근이 안되신다면 방화벽 문제일가능성이 있으며
iptables, ufw에서 3306 포트를 오픈해주면 되겠습니다.[Reference] : 달소, 「서버포럼 – 웹서버에서 DB서버 별도 구축 후 연동하기.」 https://svrforum.com/?document_srl=77942&mid=svr&act=dispBoardContent.