Lsiron
구글 클라우드를 통한 MySQL 배포하기 본문
구글클라우드를 통해 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 |