Google Cloud Platform으로 Centos7에 mysql8 설치
-..- 꼬박 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
다음은 mysql8 버전 설치 방법이다.
https://tecadmin.net/install-mysql-8-on-centos/
설치가 다 된다음 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
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
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/
도움이 많이 된 글
https://brunch.co.kr/@smalljiny/3