본문 바로가기
프로그래밍/invest helper

GCE (Google Compute Engine)에 mysql-server 설치하기

by ® 2020. 12. 28.
반응형

Invest Helper의 sql 데이터베이스를 만들기 위해 GCP (Google Cloud Platform)의 GCE (Google Compute engine)를 이용하였다.

 

GCP에서 제공하는 sql database 전용 서비스인 Cloud SQL이 있지만, GCE와 동일 성능 대비 가격이 비싸다.

 

물론, Compute Engine에 직접 sql database를 구축할 시 여러 설정을 직접 해야하고 자동백업, 자동스케일링 등의 기능을 제공받지 못하지만 서비스가 매우 커질때까지는 큰 의미가 없을 것 같다.

 

1. GCE 인스턴스를 생성

콘솔 혹은 gcloud 명령어로 본인이 원하는 성능의 인스턴스를 직접 생성한다.

 

2. mysql server 설치

현재는 mysql 5.7 버전을 사용하고 있다.

sudo apt-get update

sudo apt-get -y install mysql-server-5.7

 

3. mysql 보안 설정

비밀번호가 각종 보안과 관련된 설정을 수행한다.

sudo mysql_secure_installation

 

4. 데이터베이스 생성 및 데이터 불러오기

A. mysql에 접속

sudo mysql -u root

B. 데이터베이스 생성

create database [db_nanme]

C (선택). mysql 접속 종료 후 불러올 데이터가 있으면 sql 파일을 이용해 불러온다 (혹은 다른 방법이 있으면 다른 방법으로 해도 된다)

sudo mysql -u root -p --default-character-set=utf8 [db_name] < [file_name].sql

※ 한글 데이터 백업

mysqldump -u root -p [db_name] -r [file_name].sql

 

5. 외부 접속 허용하기

A. mysql.cnf 파일 열기

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

B. bind-address를 0.0.0.0으로 수정 (127.0.0.1로 설정시 localhost만 접속가능)

bind-address=0.0.0.0

C. 사용하는 mysql 계정이 외부접속을 허용하는지 확인

- 계정의 host가 '%'로 설정되있으면 모든 외부접속을 허용함

- 그렇지 않을 경우 root user의 host를 '%'로 새로 만들어주거나, 아예 새로운 유저를 만들어야 함

- 여기서는, readonly user를 새로 만듬

sudo mysql -u root

mysql> CREATE USER readonly; # 기본적으로 host가 '%'로 설정됨
mysql> SET PASSWORD FOR readonly = PASSWORD('[비밀번호]'); 
mysql> GRANT SELECT ON *.* TO readonly; # readonly 계정은 SELECT만 허용

 

6 (선택). 최종 세부 설정하기

Invest helper의 경우, 특정한 sql_mode를 사용합니다.

sudo nano /etc/mysql/my.cnf

[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

 

 

7 (선택). 방화벽 규칙을 만들어 mysql port 열기

외부IP로 mysql server에 접근 시 GCP "VPC 네트워크"탭에서 mysql이 청취하는 port를 열어줘야 한다.

 

여기서는 port 번호가 3306이라고 가정한다.

 

A. GCP console에서 "VPC 네트워크" 클릭

B. "방화벽" 클릭

C. "방화벽 규칙 만들기" 클릭

 

반응형

댓글