OS/centOS

다시 정리하는 Centos에 spring tomcat mysql 설치 사용

벨포트조던 2020. 8. 24.
반응형

목차 

 

 

 

 

정리하지 않고 여러번 재설치를 하다보니... 다시 찾아보기가 빡처서 다시 보기위해 한번 정리한다.

 

 

환경 

gcp, centos7, mysql 5.7

 

 

단계

1. GCP 인스턴스는 생성된 상황

2. sudo passwd   

관리자 권한 획득

3. mysql 설치 ( java 보다 먼저하는게 편할듯 해서 )

 

/usr/local/src/tomcat  이동 ( tomcat은 없어서 만들어야함 )

 

 

mysql8 버전 셋팅과정은 여기 (설치는 내방식대로 하자. 저대로 하니 에러낫음 )
https://1mini2.tistory.com/86
https://1mini2.tistory.com/87

 

wget 설치

$ yum install wget

MySQL 다운로드

$ wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

MySQL 설치

$ sudo rpm -ivh mysql57-community-release-el7-11.noarch.rpm

MySQL 서버 설치

$ sudo yum install mysql-server

서비스 시작

$ sudo systemctl start mysqld

 


서비스 확인

systemctl status mysqld

 

// 보안스크립트 실행 부분은 왜하는지 모르겠는데, 걍 하래서 했음

보안 스크립트 실행

$ sudo mysql_secure_installation

기본 루트 암호를 묻는 메세지가 나타난다. 그 다음 새로운 비밀번호를 입력을 요구하는 메세지가 나타난다.

The existing password for the user account root has expired. Please set a new password. New password:

MySQL 5.7 버전으로 넘어오면서 password validation에 대한 강도가 높아졌다. 하나 이상의 대문자, 숫자, 특수 문자가 포함 된 12자리의 암호를 요구한다. 암호를 입력하면 암호 강도에 대한 피드백을 받게 되며, 익명의 사용자의 삭제 및 루트의 리모트 로그인을 막을 것인지 대한 질문들을 한다.

설치가 완료됐다. 하지만 설정이 잘못 되었는지 설치까지는 온전히 진행이 되었으나 로그인이 진행되지 않았다. 그래서 루트의 비밀번호를 재설정했다.

 // 2021.12 이거 진행이 안된다. 일단 넘어간다 이부분은 

 

실행이 되었다.

아래줄처럼 로그인 하려면 로그인이 안된다.

mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

비밀번호 재설정

MySQL 정지

$ systemctl stop mysqld

MySQL 환경 옵션 설정

기존의 솔루션은 mysqld safe를 통해 재설정을 진행하는 것이다. 하지만 MySQL 5.7.6부터 RPM 배포판을 사용해서 설치하는 경우에는 systemd에서 관리를 하기 때문에 mysqld safe가 필요 없어 설치가 되지 않는다. 아래와 같은 환경 옵션을 설정 해준다.

$ systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

MySQL 시작

$ systemctl start mysqld

MySQL 로그인

루트의 비밀번호 없이 로그인 가능

$ mysql -u root

루트 비밀번호 변경

5.7부터 비밀번호 컬럼이 password에서 authentication_string으로 변경됐다.

mysql> UPDATE mysql.user SET authentication_string = PASSWORD('새로운 비밀번호') WHERE User = 'root' AND Host = 'localhost';

mysql> FLUSH PRIVILEGES;

 

 

잘되는지 확인

mysql> SELECT 1;

 

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

 

위와 같은 오류가 발생하는 경우 다음과 같은 명령어를 실행한다.

 

mysql> SET PASSWORD = PASSWORD('암호');

 

비밀번호 정책 오류시 

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

이런 에러가 나올경우 

set global validate_password_policy=LOW;

이걸로 일시적(확실치 않음)으로 낮출 수 있다.

 show variables like 'validate_password%';

비번 정책 확인 

 

MySQL 정지

$ systemctl stop mysqld

MySQL 환경 옵션 설정 해제

다음 접속부터는 정상적으로 로그인할 수 있도록 환경 옵션 설정 해제를 한다.

$ systemctl unset-environment MYSQLD_OPTS

MySQL 시작

$ systemctl start mysqld

MySQL 로그인

$ mysql -u root -p

 

이후 select 1; 을 호출시 출력되면 다음 단계

 

 

4. mysql 외부접속 권한 허용 

모든 IP 허용

  • 참고로 %은 모든 아이피를 포함하지만, localhost는 포함되지 않는다.

방법1. GRANT

GRANT ALL PRIVILEGES ON *.* TO '아이디'@'%' IDENTIFIED BY '패스워드';

mysql

방법2. INSERT+GRANT+FLUSH

INSERT INTO mysql.user (host,user,password,ssl_cipher, x509_issuer, x509_subject) VALUES ('%','아이디',password('패스워드'),'','',''); GRANT ALL PRIVILEGES ON *.* TO '아이디'@'%'; FLUSH PRIVILEGES;

IP 대역 허용

  • 예: 111.222.xxx.xxx

방법1. GRANT

GRANT ALL PRIVILEGES ON *.* TO '아이디'@'111.222.%' IDENTIFIED BY '패스워드';

mysql

방법2. INSERT+GRANT+FLUSH

INSERT INTO mysql.user (host,user,password,ssl_cipher, x509_issuer, x509_subject) VALUES ('111.222.%','아이디',password('패스워드'),'','',''); GRANT ALL PRIVILEGES ON *.* TO '아이디'@'111.222.%';

FLUSH PRIVILEGES;

sql

→ 111.222로 시작하는 모든 IP가 허용된다.

특정 IP 1개 허용[편집]

  • 예: 111.222.33.44

방법1. GRANT

GRANT ALL PRIVILEGES ON *.* TO '아이디'@'111.222.33.44' IDENTIFIED BY '패스워드';

mysql

방법2. INSERT+GRANT+FLUSH

INSERT INTO mysql.user (host,user,password,ssl_cipher, x509_issuer, x509_subject) VALUES ('111.222.33.44','아이디',password('패스워드'),'','',''); GRANT ALL PRIVILEGES ON *.* TO '아이디'@'111.222.33.44'; FLUSH PRIVILEGES;

원래 상태로 복구

  • 모든 IP를 허용한 경우 다음과 같이 원래 상태로 복구할 수 있다.

DELETE FROM mysql.user WHERE Host='%' AND User='아이디'; FLUSH PRIVILEGES;

 

 

패스워드 설정 시 
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
해당 에러가나오면 .. 이건 찾아서 보도록하자 쉬움

 

이러면 외부 허용이 끝남 

 

5. 방화벽 오픈 

-GCP의 VPC 네트워크 -> 방화벽 으로 접속해서 3306 포트 방화벽 추가 

-centos 에서 3306방화벽 오픈 

$ sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent

$ sudo firewall-cmd --reload

 

이걸로만 오픈이 되었음. 

방화벽은 여러가지 방법으로 오픈할수있으니.. 안되면 다시 찾아보자 

 

// 2021.12

GCP 방화벽 오픈

gcp도 방화벽을 설정해줘야한다. 너무 예전에 했던거라 다시 셋팅하는 걸 몰라서 찾아봤다

https://velog.io/@biosina1/GCP-MYSQL-%EC%99%B8%EB%B6%80-%EC%A0%91%EC%86%8D-%ED%97%88%EC%9A%A9-%EB%B0%A9%EB%B2%95

 


mysql 외부에서 연결 성공함

 

 

 

 

java tomcat은 다른 글에 작성

 

반응형

댓글