반응형
Preview
- 집에서 구축해놓은 개인 DB 서버를 다른 외부 환경(포스팅에서의 환경은 회사ㅎㅎ...)에서 접속하여 테스트하기
- 집에 구축한 개인 DB 서버를 연결 테스트 한 화면
준비물
- 안쓰는 컴퓨터 혹은 SBC(라즈베리파이 등)
- 개인 서버이고 개발용이기 때문에 서버 컴퓨터까지는 고려 하지 않음!
포스팅에서의 환경
- 구축할 DB 서버의 사양 (안쓰는 노트북)
- Bit : 32비트 운영 체제
- OS : 윈도우 10
- Memory : 3GB
- CPU : i5 M 430 (2010년식 듀얼코어 2.25GHz)
- 요약 : 사양 안좋음
구축할 MySQL DB 서버 설정
* 이 포스팅은 MySQL이 설치되어있다는 전제하에 진행합니다.
* 구축할 컴퓨터는 32비트이며 MySQL Server를 설치하여 진행하였습니다.
MySQL 포트 확인&설정하기
구축할 DB 서버가 어떤 포트를 사용하는지 알아야 해당 포트로 DB 서버를 이용할 수 있습니다.
MySQL의 경우 보통은 3306의 포트를 사용하지만 특수한 경우가 존재할 수 있어 포트를 확인해보는 것이 좋습니다.
- 시작 - 'MySQL Installer' 검색 - 프로그램 실행
- MySQL Server 우측의 Reconfigure 클릭
- 아래의 그림처럼 포트를 확인하거나 또한 다른 포트 번호로 변경할 수 있습니다.
- 포스팅에서는 포트 번호를 '3306'이 아닌 의도적으로 '413'으로 바꿔서 포스팅을 진행하였습니다.
MySQL 사용자 권한 설정
외부 접속을 허용할 사용자와 권한을 설정합니다.
- 시작 - 'command line' 검색 - 프로그램 실행
- 버전은 각 환경마다 다를 수 있으니 신경 쓰지 않으셔도 됩니다.
- 비밀번호를 입력하면 MySQL 콘솔 창이 나옵니다.
- 외부 접속을 허용할 유저를 만듭니다.
- 사용자명 : MySQL 서버에 로그인할 사용자의 이름을 정의
- 호스트 : 접속을 허용할 호스트 정의
- 비밀번호 : MySQL 서버에 로그인할 사용자의 비밀번호 정의
<!-- 유저 생성 기본 구문 -->
CREATE USER '사용자명'@'호스트' IDENTIFIED BY '비밀번호';
- 각각 'tester' / '1234' 라는 이름과 비밀번호를 가진 유저 생성
- 호스트의 '*' 표시는 모든 곳에서 접속을 허용한다는 의미입니다.
- 특정 아이피만 접속을 허용 하고 싶을 경우, 호스트 부분에 특정 아이피를 적어주시면 됩니다.
CREATE USER 'tester'@'*' IDENTIFIED BY '1234';
- 외부 접속한 사용자의 권한을 설정합니다.
- GRANT ALL PRIVILEGES : 데이터베이스의 모든 권한 부여
- 데이터베이스명 : 권한을 부여할 데이터베이스명
- 사용자명 : 권한을 부여받을 사용자명
<!-- DB 권한 설정 기본 구문 -->
GRANT ALL PRIVILEGES ON 데이터베이스명 TO 사용자명;
- 'tester' 사용자에게 'flutter_memo_app'이라는 데이터베이스에 모든 권한주기
GRANT ALL PRIVILEGES ON flutter_memo_app.* TO 'tester'@'%' IDENTIFIED BY '1234';
- 'tester' 사용자에게 모든 데이터베이스에 대한 권한 주기
GRANT ALL PRIVILEGES ON *.* TO 'tester'@'%' IDENTIFIED BY '1234';
- 변경된 권한 설정을 적용하기 위해 다음 명령어를 실행합니다.
FLUSH PRIVILEGES;
내부 포트 열기 (방화벽 해제)
- 시작 - 설정 - 제어판
- 시스템 및 보안
- Windows Defender 방화벽
- 좌측의 '고급 설정'
- 좌측의 '인바운드 규칙' 클릭
- 우측의 인바운드 규칙에서 '새 규칙'
- 프로그램
- 모든 프로그램
- 연결 허용
- 규칙 적용 시기 모두 체크
- 식별 가능한 이름과 설명 입력
- 마침
- 추가한 인바운드 규칙 더블 클릭 (특정 포트만 열어주기 위해서 진행)
- 이 작업은 모든 포트가 열려있는 상태이기 때문에 모든 포트를 열어도 상관 없으면 따로 진행하지 않으셔도 됩니다.
- 프로토콜 및 포트 탭 이동
- 프로토콜 종류 : TCP
- 로컬 포트 : 특정 포트 / MySQL 포트 번호 입력
외부 포트 허용하기 (포트 포워딩)
참고
* 이 포스팅에서는 공유기가 설치되어 있는 네트워크를 기준으로 작성되었습니다.
* iptime 공유기를 기준으로 설명합니다.
+ 꼭 iptime이 아니여도 웬만하면 192.168.0.1 주소로 접속하면 설정 페이지가 나옵니다. 저 또한 iptime 공유기가 아니며 sk 공유기 입니다. 설정 페이지가 나오지 않을 경우, 인터넷에 사용중인 공유기 이름과 함께 포트 포워딩 키워드를 검색하시면 쉽게 확인할 수 있습니다.
내부 아이피 주소 확인하는 방법
- 시작 - '실행' 검색 - 프로그램 실행 - 'cmd' 입력 후 확인
- 아래의 명령어를 입력하여 내부 아이피 확인
ipconfig
iptime 포트 포워딩 설정하기
- 주소창에 '192.168.0.1' 입력
- 사용자 로그인 - 관리도구
- (좌측 메뉴에서) 고급 설정 - NAT/라우터 관리 - 포트 포워드 설정
- 포트포워드 규칙 생성
- 규칙이름 : 식별 가능한 이름, 사용자가 정의
- 내부 IP 주소 : 포트 포워딩 할 내부 IP 주소 (위에서 확인한 내부 IP 주소)
- 프로토콜 : TCP
- 외부 포트 : 3306 (외부에서 접속할 포트 번호)
- 3306은 MySQL 기본 설정 포트 번호이며, 사용자에 따라 다르게 설정할 수 있습니다.
- 내부 포트 : 413 (내부에서 열어준 포트 번호)
- 3306은 MySQL 기본 설정 포트 번호이며, 포스팅에서는 내부 포트를 413으로 설정하였음
- 물론 외부 포트도 함께 동일하게 413으로 하셔도 됩니다.
- 적용
- 포트 포워드 규칙이 생성되었는지 확인
외부에서 MySQL DB 서버 접속하기
외부 아이피 주소 확인하는 방법
- 시작 - '실행' 검색 - 프로그램 실행 - 'cmd' 입력 후 확인
- 아래의 명령어를 입력하여 외부 아이피 확인
curl ipinfo.io
외부에서 구축한 MySQL DB 서버 접속하기
- (다른 환경의 컴퓨터에서) MySQL Workbench 실행
- 홈 화면에서 MySQL Connections 바로 오른쪽의 + 버튼 클릭
- New 버튼을 눌러 새로 접속할 커넥션 생성
- Connection Name : 접속할 커넥션을 식별할 이름 정의
- 파라미터 정보 입력
- Hostname : 위에서 확인한 외부 아이피
- Port : 설정한 포트포워딩의 외부 포트 번호, 내부 포트 번호 아님!
- Username : 외부에서 접속할 사용자명, 권한 설정한 사용자가 아니면 접속 되지 않습니다.
- Test Connection 버튼을 눌러 접속 되는지 확인
- 접속할 사용자의 비밀번호 입력 - OK
- 접속 성공
PS
- 테스트로 생성한 유저는 지워줍시다.
DROP USER 사용자명@호스트;
참고
반응형