본문 바로가기

카테고리 없음

로컬 네트워크의 MySQL 접속하기 ( MySQL 권한 / 포트 / 방화벽 )

 

로컬 네트워크 상의 다른 PC 또는 다른 서버에 My SQL 서버를 설치 하였다면, 같은 로컬 네트워크 상의 개발PC에서 MySQL 서버로 접속을 해야 한다.

 

그런데, 기본 설정으로 MySQL 서버에 연결하려는 로컬네트워크 상의 다른 PC가 허용되지 않는다.

 

MySQL에서는 각 사용자마다 허용되는 IP를 설정할 수 있는데, 로컬네트워크 상의 MySQL 서버에 접속하려면 설정을 변경하여 해당 PC에서 연결을 허용하도록 설정해야 한다.

 

나의 네트워크는 아래와 같이 구성되어 있다.

192.168.35.39 - MySQL Server 8.0

192.168.35.21 - 개발 PC

192.168.35.40 - CentOS 9 / App 배포서버

 

우선 MySQL 서버가 설치되어 있는 192.168.35.39 의 PC에서 MySQL 콘솔에 접속하여야 하는데 윈도우 사용자라면 환경변수를 기본적으로 설정해주어야 한다.

 

시작 + Q를 눌러 검색창을 띄운 후, "환경" 이라고 검색한다.

그럼 "시스템 환경 변수 편집" 이 검색되는데 클릭하여 들어가준다.

 

제일 하단에 환경 변수 클릭

 

시스템 변수 > Path > 편집 클릭

 

MySQL 서버가 설치된 폴더의 경로를 확인한다.

윈도우 사용자라면 보통은 아래의 위치에 있을 것이다.

C:\Program Files\MySQL\MySQL Server 8.0\bin
 

확인 했다면 환경변수에서 새로 만들기를 클릭, 해당 주소를 붙여넣기 한 후, 확인을 클릭한다.

 

 

mysql -h localhost -u root -p
 

이제 CMD 또는 윈도우 터미널을 열어준 다음 위의 명령어를 입력 후 MySQL에 접속해보자.

접속할 때 비밀번호를 묻는데, MySQL 서버를 설치할때 설정해놨던 Root 비밀번호를 입력한다.

 

최초 MySQL서버 설치시 mysql 과 admin 만 존재한다.

따라서, mysql 로 DB를 변경해야 한다.

USE mysql;
SELECT Host, User FROM user;
 

위의 명령어를 입력한다. 끝의 세미콜론도 같이 입력해야 한다.

그럼 localhost 만 보일것이다. 나는 미리 생성해두었기 때문에 testuser가 보인다.

이 화면에서 보여주는 뜻은 localhost 에서만, 즉 MySQL이 설치되어 있는 PC 에서만 접속이 허용되어 있다는 뜻이다.

 

 

이제 내가 사용할 DB 테이블을 만들어주자.

나는 CRUD 라는 테이블을 생성하였다.

 

 

이제 새로운 사용자를 생성 후, 해당 사용자에게 권한을 부여해보자.

CREATE user 'testuser'@'%' IDENTIFIED BY 'Test1234';
 

위 명령어에서 testuser 를 사용하고자 하는 user ID를 입력하고, Test1234 에는 사용하고자 하는 비밀번호를 입력한다.

 

GRANT ALL PRIVILEGES ON CRUD.ALL TO 'testuser'@'%';
 

위 명령어에서 CRUD.ALL 은 Dbeaver 에서 생성한 CRUD테이블을 입력하였다.

만약 다른 이름의 테이블을 생성했다면 생성한테이블이름.ALL 로 수정해주면 된다.

 

FLUSH PRIVILEGES;
SELECT Host, User FROM user;
 

위 명령어를 입력하면 변경내용을 적용하고, 새로생성한 유저가 보일 것이고 Host에는 %로 보이는데 이것은 모든 IP대역에서 접속을 허용하겠다는 뜻이다.

 

 

명령어를 다시 정리해보겠다.

MySQL 서버 접속하기
mysql -h localhost -u root -p

최초 DB설치 이후는 mysql 만 존재하기 때문에 아래로 접속한다.
USE mysql;

현재 Host와 User를 보여준다
SELECT Host, User FROM user;

새로운 사용자 testuser 와 비밀번호를 Test1234로 생성한다.
CREATE user 'testuser'@'%' IDENTIFIED BY 'Test1234';

생성된 testuser계정에 CRUD라는 테이블 권한 부여
GRANT ALL PRIVILEGES ON CRUD.ALL TO 'testuser'@'%';

변경사항 적용
FLUSH PRIVILEGES;

현재 Host와 User를 보여준다
SELECT Host, User FROM user;
 

이제 포트를 열어주어야 한다.

 

시작 + Q를 눌러 검색창을 열고 "고급 보" 를 입력하면

"고급 보안이 포함된 Windows Defender 방화벽" 이 표시된다. 이걸 눌러주자.

 

인바운드 규칙을 추가해보자.

인바운드 규칙에서 새 규직 추가를 누른다.

 

포트 > 다음

 

TCP > 특정 포트 : 3306 > 다음

 

연결 허용 > 다음

 

기본 설정에서 건들지 말고 > 다음

 

식별할 수 있게 작성하고 > 마침

 

다시 새 규칙 추가 > 포트 > 다음

 

UDP > 3306 > 다음

 

연결허용 > 다음

 

기본 설정에서 건들지 말고 > 다음

 

 

식별할 수 있게 작성하고 > 마침

이제 서버에서의 설정은 모두 끝났다.

 

개발 PC로 넘어와서 Dbeaver 를 열어서 > 상단메뉴 > 데이터베이스 > 새 데이터베이스 연결 클릭

 

MySQL 선택 > 다음

 

아까 서버에서 지정해뒀던 접속 계정과 정보를 입력하고 > 완료

 

이제 로컬네트워크 상의 MySQL 서버와 DEV컴퓨터가 서로 통신을 할 수있게 되었다.