웹서버에서 DB서버 별도 구축 후 연동하기.
개다리 님께서 올려주신 글에 대한 답변입니다.
생각보다 글작성이 늦어지게 졌네요.
먼저 질문의 요지는
웹서버와 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 포트를 오픈해주면 되겠습니다.
이쪽은 여러 부분이 같이 맞물려 있어서..
DBA / 인프라 / 개발자/ 사용자(엔드유저) 까지 동시에 엮인쪽이라...
혼자 다하는 회사가 아니면 확인하고 완료 확인까지 시간이 꾀나 걸리는 작업 이지요.. ㅎㅎ
맞습니다.. 방화벽정책도 OS방화벽,스위치 ACL,물리 방화벽 등 여러가지가 맞물려있으니까요..
작업이 빠르지는않습니다 항상..
테스트 용이면 기본 포트 상관 없지만...
그래도.. 기본 포트 보다는 변경된 포트를 사용하는 것이 최소 포트 스캔을 덜 당하(?) 니깐요 ㅎㅎ;
기본 포트 변경하는게 귀찮기는 하지만요.. 조금이라도 학습에는 도움이 되니깐요 ㅎㅎ;
맞습니다 그게 기본 보안권장사항이기도 하니까요 ㅎㅎ
회사에서는 하지만,,집에서는하지않는,,힛,,
기본포트로 포트 스캔 로그 찍히면 은근(?) 기분이 좋지는 않더라고요 ㅎㅎ
달소님과 저는 다른 포지션이라... ㅎㅎ
제가 일하는 곳에서는 기본 포트로 사용중입니다. 이유는? 내부망이라서요... ㅎㅎ
외부에서 내부로 접속할려면 VPN이용해야해서.. ㅠ
DB도 권한을 받을려면 몇단계나 승인을 걸쳐야해서요..
cmt alert