목차
정리하지 않고 여러번 재설치를 하다보니... 다시 찾아보기가 빡처서 다시 보기위해 한번 정리한다.
환경
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도 방화벽을 설정해줘야한다. 너무 예전에 했던거라 다시 셋팅하는 걸 몰라서 찾아봤다
mysql 외부에서 연결 성공함
java tomcat은 다른 글에 작성
'OS > centOS' 카테고리의 다른 글
[tomcat] 가비아 포트번호, url 포트번호 숨기기 redirect (0) | 2022.03.23 |
---|---|
Tomcat :: 톰캣8 manager 403 access denied 해결 방법 (0) | 2020.08.30 |
리눅스 방화벽 firewalld (CentOS 7) (0) | 2018.01.24 |
centOS 톰캣, JAVA (JDK) 설치 작업 (0) | 2018.01.15 |
댓글