Lsiron

구글 클라우드를 통한 MySQL 배포하기 본문

데이터베이스/MySQL

구글 클라우드를 통한 MySQL 배포하기

Lsiron 2024. 7. 9. 18:32

구글클라우드를 통해 MySQL을 배포해보자.

 

1. 인스턴스 만들기

 

리전은 서울로 하고 머신유형은 standard의 e2-standard-2(ram 8기가)를 선택해주자.

 

부팅 디스크는 운영체제는 ubuntu 그리고 버전은 ubuntu 22.04 LTS 로 선택해 주고, 크기는 30GB로 설정해주자.

(10GB는 너무 작음)

 

 

마지막으로 HTTP와 HTTPS 트래픽을 허용해주자.

 

인스턴스를 생성이 완료됐으면

 

SSH 옆 화살표를 눌러주고 브라우저 창에서 열기를 눌러주자.

 

이제 터미널 창이 열렸다.

2. 루트 접속 

$ sudo su root

명령어를 통해 루트 접속을 하여 권한을 변경 해주자.

( # cd ~ 홈으로 이동 => 개인 성향이다. )

 

3. 패키지 업데이트

# apt update && apt upgrade

명령어를 통해 패키지를 업데이트 해주자.

 

4. zsh 설치 ( Zsh 설치로 인해 좀 더 편한 CLI를 구축 할 수 있다. )

# apt install zsh

명령어를 통해 zsh를 설치해주자.

 

# zsh

명령어를 통해 zsh에 들어가준다

 

# exit

명령어를 통해 다시 나와준다

 

# echo $SHELL 

명령어를 입력하면 '/bin/bash' 으로 되어있다. (현재 환경의 SHELL이 어떤 쉘인지 확인하는 것 - 기본은 bash /)

 

# chsh -s $(which zsh)

명령어를 통해 디폴트 shell zsh로 변경해주자.

 

# exit

명령어를 통해 다시 나와준다.

 

$ sudo su root

명령어를 통해 다시 루트권한으로 바꾸어준다.

 

# echo $SHELL

명령어를 입력하면 /usr/bin/zsh 로 바뀌어있다.

 

5. Oh-my-zsh 설치( oh-my-zsh 설치로 인해 좀 더 편한 CLI를 구축 할 수 있다. )

# sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

명령어를 통해 Oh-my-zsh 를 설치해주자.

 

개인아이디 cd ~

명령어를 통해 루트 디렉토리로 이동해주자.

 

~ ls -la

명령어를 입력 해보면 .oh-my-zsh 가 생겼다.

 

6. Plugin 설치

~ cd .oh-my-zsh/plugins

명령어를 통해 해당 경로로 들어가자.

 

plugins git: (master) git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
plugins git: (master) git clone https://github.com/zsh-users/zsh-autosuggestions

위의 두 명령어를 입력해주자.

 

plugins git: (master) cd ~

명령어를 통해 홈으로 다시 오자.

 

~ vi .zshrc

명령어를 통해 들어가자

 

plugins=(git) 단 으로 가자

 

g 있는곳에 커서를 대고 i를 누르자

 

zsh-syntax-highlighting ( 문법에 맞게 감지 )
zsh-autosuggestions ( 자동완성 )

위 사진과 같이 입력하고 저장한 뒤 나가보자.

 

~ exit

명령어를 통해 나가보자.

 

# zsh

명령어를 통해 다시 들어오자.

 

위 사진처럼 c 가 오류여서 빨간색으로 뜨고 cd ~ 라는 자동완성이 뜬다.

 

개인아이디 cd ~

명령어로 다시 루트 디렉토리로 가자.

 

$ pwd

명령어를 통해 경로를 확인해준다. /root로 나올 것이다.

 

7. net-tools 설치

~ apt install net-tools

명령어를 통해 네트워크 관련 툴을 설치해주자

 

8. MySQL 설치

~ apt install mysql-server

명령어를 통해 mysql 서버를 설치해주자.

 

~ netstat -tnlp

명령어를 통해 열려있는 포트를 확인해보자.

 

위 사진처럼 되어있으면 된다.

 

~ mysql -u root

명령어로 mysql로 접속해보자.

( 혹시 mysql -u root를 두번 입력해서 쿼리를 끝내려면 세미콜론(;)을 치고 엔터를 눌러야함 )

 

9. 유저 생성

mysql> CREATE USER 'remote_admin'@'%' identified by '1234';

admin을 생성해주자. 이름 remote_admin  / ip는 모두 허용 / 비밀번호 1234 

 

mysql> CREATE USER 'remote_user'@'%' identified by '1234';

user를 생성해주자. 이름 remote_user  / ip는 모두 허용 / 비밀번호 1234 

 

mysql> SELECT user,host FROM mysql.user; 

잘 생성됐는지 확인한다.

위 사진 처럼 두개가 추가 된 것을 알 수 있다.

 

10. 유저에 권한 부여 맨 처음 유저가 생성되면 무권한의 상태이다 => 접속만 가능)

mysql> GRANT ALL privileges ON *.* TO 'remote_admin'@'%';

명령어를 통해  admin에 모든 권한을 주자.  -> 모든 스키마의 모든 테이블에 대한 모든 권한 부여

 

mysql> GRANT SELECT ON *.* TO 'remote_user'@'%';

명령어를 통해 user 에게는 SELECT 권한만 주자.

 

mysql> exit

명령어를 통해  밖으로 나가주자

 

~ ufw allow mysql

명령어를 통해 포트 룰을 업데이트 해주자

 

~ vi /etc/mysql/mysql.conf.d/mysqld.cnf

명령어를 통해  해당 경로로 들어가주자.

 

루프백을 외부 접속도 허용하게 해준 것이다. ( mysql 차원에서 )

 

한 프로그램을 외부에서 접속 가능하도록 하려면 네트워크 단에서 허용을 해줘야 하고 프로그램 단에서 허용해줘야한다.

 

11. 프로그램 단에서 IP 열기

지금 하려는 것은 프로그램 단에서 허용해주는 이다.

 

bind-address            = 127.0.0.1
mysqlx-bind-address     = 127.0.0.1

 

를  아래와 같이 0.0.0.0 으로 바꿔주자.


bind-address            = 0.0.0.0
mysqlx-bind-address     = 0.0.0.0

 

~ netstet -tnlp

명령어를 통해 mysql이 열려있는지 확인해보자

 

~ systemctl stop mysql

명령어를 통해 mysql을 닫아주자

 

~ netstet -tnlp

명령어를 통해 다시 확인해보자. mysql 이 사라져있다.

 

~ systemctl start mysql

명령어를 통해 이제 mysql을 다시 열어보자

 

~ netstet -tnlp

명령어를 다시 입력해보자

 

아래 사진처럼 되면 된다.

 

12. 네트워크 단에서 IP 열기

이제 구글 클라우드로 다시 가서, 인스턴스를 클릭하여 들어간다.

 

network interface 단 에서 network 칼럼default를 누른 뒤, 왼쪽 사이드바의 방화벽으로 들어가주자.

 

 

이제 위 사진처럼 돼 있을 것이다.

 

 

상단 네비바에서 방화벽 규칙 만들기를 눌러주자.

 

이름은 mysql로 해주고, 대상은 모든 네트워크, 아이피는 전체 허용, TCP 3306으로 포트를 열어주자.

 

 

위 사진처럼 방화벽 규칙을 만들어주자.

 

이제 VM 인스턴스로 다시 돌아가주자. 이러면 mysql 배포가 완료되었다!

 

'데이터베이스 > MySQL' 카테고리의 다른 글

MySQL의 Index  (0) 2024.07.11
집계함수와 제어키워드  (0) 2024.07.10
정규화와 역정규화 그리고 이상현상, 함수의 종속성  (2) 2024.07.09
데이터 모델링이란?  (0) 2024.07.09
제약 조건과 키  (0) 2024.07.09