Linux

Google Cloud Platform으로 Centos7에 mysql8 설치

NaHyungMin 2019. 10. 8. 17:12

-..- 꼬박 1~2일을 사용한 것 같다.

Centos6쓰다가 7로 변경하니 모르는 것도 많고, GCP에서도 해결이 안되는 것도 많고 흠.

 

이 글을 읽는 당신에게 도움이 되길 바란다. ㅠ.ㅠ 미래의 나에게도...

일단 mysql에 포트를 변경할 것이기에 GCP 작업부터 한다.

 

GCP에 접속하여 VPC 네트워크에서 방화벽 규칙에서 하나 생성해주자.

난 mysql-remote-access으로 지었다.

 

 

일단 집에서 작업해야 하므로, 공인 ip가 아니기에 0.0.0.0/0으로 접속이 가능하게 해놨다.

만약 공인 ip나 회사에서 쓴다면 접속 ip 허용으로 변경 가능하다.

 

 

완성이 되었다면 이제 네트워크 태그에 들어가 mysql-remote-access를 보안에 추가해주면 된다.

 

 

여기까지는 KT, aws랑 유사하다.

일단 여기서는 putty로 접속하는 방법은 생략한다.

 

*생략 가능

mysql 설치 시 권장 메모리는 1gb이다.

하지만 gcp 무료버전은 600mb만 지원하기 때문에 mysql 설치 후 실행하려면 오류가 난다.

그래서 디스크를 메모리로 사용해야 한다.

만약 당신의 메모리가 1gb 이상이라면 넘어가도 좋다.

dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /swapfile
swapon /swapfile

 

https://stackoverflow.com/questions/10284532/amazon-ec2-mysql-aborting-start-because-innodb-mmap-x-bytes-failed-errno-12

 

Amazon EC2, mysql aborting start because InnoDB: mmap (x bytes) failed; errno 12

I have set up a micro instance server on EC2 based on what I read here mysql server fails frequently and for the third time mysql server is gone. The logs only shows 120423 09:13:38 mysqld_safe ...

stackoverflow.com

 

다음은 mysql8 버전 설치 방법이다.

https://tecadmin.net/install-mysql-8-on-centos/

 

How To Install MySQL 8.0 on CentOS/RHEL 7/6 & Fedora 30/29 – TecAdmin

MySQL 8 is the latest version available for the installation. MySQL is a most popular database server for Linux systems, it also supports a large number of platforms. This tutorial will help you to Install MySQL Server 8.0 Community Edition on CentOS/RHEL

tecadmin.net

설치가 다 된다음 root 비밀번호를 못 보고 /var/log/mysqld.log에 내용을 지워버렸다. -..-

그래서 다음과 같은 행동을 했다.

 

https://zetawiki.com/wiki/MySQL_root_%ED%8C%A8%EC%8A%A4%EC%9B%8C%EB%93%9C_%EB%B6%84%EC%8B%A4

 

MySQL root 패스워드 분실 - 제타위키

리눅스, MySQL 5.0.77에서 테스트하였습니다. MySQL 초기 패스워드 지정 MySQL root 패스워드 분실 MySQL root 패스워드 초기화 MySQL root 패스워드 재설정 1 mysqld 중지[편집] [root@localhost ~]# service mysqld stop Stopping MySQL: [ OK ] 2 mysqld_safe 실행[편집] 인증 생략 옵션 + 안전모드로 데몬 실행 /usr/bin/mysqld_safe --skip

zetawiki.com

service mysqld stop
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
service mysqld start

--최초 접속시
ALTER USER 'root'@'localhost' IDENTIFIED BY 'pwd';

CREATE USER 'root'@'%' IDENTIFIED BY 'pwd';

--비밀번호 변경
update mysql.user set authentication_string=password('pwd')
where user='root' and host='localhost';

service mysqld stop
systemctl unset-environment mysqld_opts
service mysqld start

 

외부 접속

https://dogcowking.tistory.com/154

 

MySQL 원격 접속 / ERROR 1410 (42000): You are not allowed to create a user with GRANT

* 개요 MySQL 은 기본저긍로 local에서만 접속 하도록 설정되어 있음. - 외부에서 접속하려면 해당 IP 원격접속 허용해줘야 함. - 만약 안되어 있다면 다음 오류 발생 ERROR 1045 (28000): Access denied for user..

dogcowking.tistory.com

centos7 mysql8
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

 

비밀번호 정책 변경
show variables like 'validate_passwrod%'
SET GLOBAL validate_password.policy=LOW; 

 

/etc/my.cnf에 port를 변경해주자.

port 부분만 써넣으면 된다.

gcp 설정, mysql 설치까지 끝났으니, 포트만 오픈해주면 된다.

 

yum install firewalld

systemctl start firewalld

systemctl enable firewalld

 

-. 현재 오픈된 포트 확인
netstat -tulpn | grep LISTEN
-. 방화벽 iptables 확인
iptables -L --line
-. 방화벽 포트오픈 추가
firewall-cmd --permanent --zone=public --add-port=포트/tcp
-. 방화벽 포트오픈 제거
firewall-cmd --permanent --zone=public --remove-port=포트/tcp
-. 방화벽 설정 재시작
firewall-cmd --reload

firewall-cmd --zone=public --add-service=서비스명
firewall-cmd --zone=public --add-service=mysql --permanent

SELinux 추가
semanage port -a -t mysqld_port_t -p tcp 포트
semanage port -l | grep mysqld_port_t

실행 중 확인
systemctl list-unit-files | grep mysqld

 

방화벽
https://www.lesstif.com/pages/viewpage.action?pageId=22053128
https://wookoa.tistory.com/357
https://stackoverflow.com/questions/29709702/how-to-enable-firewall-on-centos-7
http://airpage.org/xe/project_data/24320
http://www.mysqlkorea.com/gnuboard4/bbs/board.php?bo_table=community_03&wr_id=1710

//SELinux 
https://hbesthee.tistory.com/1605
https://gracefullight.dev/2017/01/10/mysql-maria-%EB%93%B1%EC%9D%98-%EC%84%9C%EB%B9%84%EC%8A%A4-%ED%8F%AC%ED%8A%B8-%EB%B3%80%EA%B2%BD%EC%9D%B4-%EC%95%88-%EB%90%A0%EB%95%8C/

 

설치 후 주의사항
http://blog.naver.com/PostView.nhn?blogId=matoker&logNo=220713895556&categoryNo=18&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView

 

도움이 많이 된 글
https://brunch.co.kr/@smalljiny/3

 

[GCP] GCE에 MySQL 설치하기

Toad for MySQL로 연결해보자! | 오늘은 GCP(Google Cloud Platform)에 생성한 GCE(Google Compute Engine)에 MySQL을 설치하고 외부에서 연결할 수 있도록 설정해보려고 합니다. 개발용 DB 설정이기 때문에 대부분의 설정은 기본값을 사용할 것 이므로 각각에 대한 상세 설정은 참고자료의 링크를 활용하시기 바랍니다. 설치할 소프트웨어 MySQLApach

brunch.co.kr