백엔드/MySQL

[MySQL] MySQL 원격 접속 방법

순코딩 2024. 11. 1. 00:22

참고자료

 

mysql 원격접속하는 방법

database도 하나의 서버이기 때문에 외부에서 접속을 해야하는 경우가 있다. 하지만 2가지의 이유로 접속이 불가능할 수 있다. 1번째. db의 접속 ip를 제한했을 경우 이는 디비 자체에서 특정 ip대역

pjt3591oo.github.io

 

 

배경

노트북에서 MySQL을 설치하고 커넥션, DB을 노트북 MySQL에 생성했다.

어느날 집에서 데스크탑 PC로 서버 작업 및 데이터베이스 확인을 해야하는 상황이 생겼다.

기존 서버 코드는 Git을 이용해 가져올 수 있었지만 데이터베이스 환경은 가져올 수 없는 것 같았다.

이에 집에 있는 데스크탑 PC로 노트북 MySQL  원격 접속을 시도한다.

이 때, 노트북을 원격(Remote) 데스크탑PC를 로컬(Local)로 지칭하겠다.

 

 

문제해결 과정

$ ipconfig

우선 원격에서 CMD를 켜고 위 명령어를 통해 IP를 확인했다.

 

$ mysql -h 192.168.1.161 -u root -p

로컬에서 위 명령어를 입력하고 원격 MySQL의 비밀번호를 입력하여 원격 MySQL로  접속을 시도했다.

하지만 위와 같은 에러가 발생했다.

이는 원격에서 로컬 IP 주소에서의 접속을 명시적으로 허용하지 않았기 때문이다.

하긴 IP 주소 안다고 DB 접속되면 벌써 온 세상 DB는 다 털렸을듯

 

 

로컬(데스크탑PC) 세팅

$ ipconfig

로컬 IP 주소 접속을 허용하기 위해 로컬의 IP를 확인한다.

로컬 세팅 끝.

 

 

원격(노트북) 세팅

원격 MySQL을 접속한 후 좌측 사이드바에서 Administrator > Users and Privileges 클릭

Add Account 클릭 > Login Name, Limit to Hosts Matching, password, Confirm Password 입력 > Apply

이 때 각 입력값은 아래와 같다.

Login Name : 원격 접속 로그인 이름(원격 접속 명령어 입력시 사용)

Limit to Hosts Matching : 원격 접속을 허가할 IP(위에서 확인했던 호스트의 IP)

password : 원격 접속 시 비밀번호 (원격 접속 명령어 입력시 사용)

 

(선택) DB 원격 접속 시도해보기

$ mysql -h {원격 IP} -u {로그인 이름} -p
// 세미콜론을 꼭 붙여야한다.
$ show databases;

여기까지 마쳤다면 호스트에서 원격 접속은 가능하다.

하지만 데이터베이스를 열람 권한이 없기 때문에 모든 데이터베이스를 열람할 수 없다.

 

Schema Privileges > Add Entry... 

Apply 클릭

위처럼 아무것도 선택 안하고 Apply를 클릭하면 자동으로 해당 유저에게 데이터베이스의 모든 권한을 부여한다.

 

원격 세팅 끝.

 

 

원격 접속

$ mysql -h {원격 IP} -u {로그인 이름} -p
// 세미콜론을 꼭 붙여야한다.
$ show databases;

로컬에서 원격 접속이 되는 것을 확인했다.

추가로 원격 접속한 MySQL의 모든 데이터베이스를 열람할 수 있는 것을 확인했다.

원격 접속 끝.

 

 

추가

Sequelize 데이터베이스 원격 접속

잘됨

 

MySQL Workbench 오류(원격 접속 불가)

어째서인지 MySQL Workbench에서는 원격 접속이 되지 않는 버그를 확인했다.

이에 아래 두가지 시도를 해보았지만 실패했다.

  • 원격 MySQL의 my.ini 파일 > [mysqld] > bind-address 수정
  • Windows Defender 방화벽 > 고급 설정 > 인바운드, 아웃바운드 > 새 규칙 생성(프로그램, 포트) 

이는 추후 더 시도해볼 예정이다.

왜 안돼;