server

[Mysql] GCP VM 인스턴스 서버에서 배포후, 내 로컬에서 데이터베이스 확인하기

inhooo00 2024. 3. 21. 00:12

이걸 고민하게 된 이유


프로젝트를 GCP 서버에 배포하다가 든 의문점이 있다.
데이터베이스 안에 있는 내용을 어떻게 확인할 수 있지?

 

그 방법을 함께 알아봅시다..

저 바보라 굉장히 친절하게 정리하니까 잘 따라오시면 됩니다..!

 

1. gcp 에서 3306포트를 열어줍니다.

VPC 네트워크 -> 방화벽 ->방화벽 규칙 만들기

수신, 허용 IP: 0.0.0.0/0, tcp포트 3306으로 만들기

 

 

2. 원격허용 되었는지 확인

2-1 GCP 인스턴스에서 mysql -uroot -p로 mysql서버 접속하기.

 

2-2 mysql DB로 바꾸기(여기에 user정보가 있음)

    mysql> use mysql;

 

2-3 원격 접속 허용 확인

mysql>

(혹시 안되면 password빼기)

host에 %이면 모든 아이피에서 접속 허용된것이고 localhost이면 원격접속이 막힌것

(특정 아이피가 써있으면 그 아이피에서만 접속되는 것으로 설정돼있는것)

 

3. 원격접속에 필요한 계정만들기(root로는 원격접속이 안된다는 말이 있음)

create user '계정이름'@localhost identified by '비번';

(에러 없으면 만들어진 것)

혹시 계정을 지우고 싶을 때

delete from user where user='유저이름';

 

4. 원격 접속 허용시키기

4-1 특정 ip만 허용

myslq> grant all privileges on *.* to '계정이름'@'192.168.0.1' identified by '계정비번'

4-2 IP 대역 허용

myslq> grant all privileges on *.* to '계정이름'@'192.168.0.%' identified by '계정비번'

4-3 모든 아이피 허용

myslq> grant all privileges on *.* to '계정이름'@'%' identified by '계정비번'

 

여기서 *.*은 스키마명.테이블명이다. *.은 모든 스키마(DB)의 테이블을 뜻한다. 특정 스키마와 테이블을 하고 싶으면 userDB. 이런식으로 입력하면 된다.

 

flush privileges;로 권한을 적용해야 한다고 하는데 나는 안했는데도 됐음

  • 혹시 권한을 지우고 싶으면revoke all on 'db명'.'테이블명' from '계정명'@'호스트';

5. 원격 허용 확인

2번으로 다시 돌아가서 host가 %로 바뀌었는지 확인

혹은 show grants for '계정명'@'호스트'로도 확인할 수 있음.

 

6. mysql 설정파일에서 모든 아이피에서 접속 만들기

에서 bind-adress = 127.0.0.1을

0.0.0.0으로 만들면 됨

 

 

 

 

6. mysql 재시작

service mysql restart

 

7. 로컬에서 원격접속해보기

`mysql -h'gcp 외부IP주소' -u'계정명' -p

접속되면 성공! mysql -h'34.82.77.27' -u'dbuser' -p