일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 제이쿼리
- 공모주
- 주식
- 오라클
- MYSQL
- Stock ipo
- php
- SQL
- 공모주 청약
- 리눅스
- html
- 6월 공모주 청약 일정
- IPO
- 주식 청약 일정
- Oracle
- 자바
- css
- 맥
- jquery
- linux
- 주식 청약
- JavaScript
- Stock
- 자바스크립트
- 7월 공모주 청약 일정
- Eclipse
- 공모주 청약 일정
- java
- codeigniter
- 코드이그나이터
- Today
- Total
개발자의 끄적끄적
[linux/mysql] CentOS 7.x MySQL 5.7 설치 [펌] 본문
[linux/mysql] CentOS 7.x MySQL 5.7 설치 [펌]
ssh 세팅을 마치고 MySQL을 이전하기 위해 설치를 진행했다. 5.7 버전으로 설치하는데 바뀐 것이 많이 있어서 정리한다.https://dev.mysql.com/downloads/repo/yum/
위의 주소에서 wget을 통해 최신 버전으로 설치했다. 2018년 4월 1일 기준으로 mysql57-community-release-el7-11.noarch.rpm이 최신이다. wget이 없다면 wget을 설치한다.
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
MySQL은 루트 로그인이나 샘플 유저와 같이 보안 수준이 낮은 기본 옵션을 변경해주는 보안 스크립트가 포함 되어있다.
보안 스크립트 실행
$ 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자리의 암호를 요구한다. 암호를 입력하면 암호 강도에 대한 피드백을 받게 되며, 익명의 사용자의 삭제 및 루트의 리모트 로그인을 막을 것인지 대한 질문들을 한다.
설치가 완료됐다. 하지만 설정이 잘못 되었는지 설치까지는 온전히 진행이 되었으나 로그인이 진행되지 않았다. 그래서 루트의 비밀번호를 재설정했다.
비밀번호 재설정
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> exit
MySQL 정지
$ systemctl stop mysqld
MySQL 환경 옵션 설정 해제
다음 접속부터는 정상적으로 로그인할 수 있도록 환경 옵션 설정 해제를 한다.
$ systemctl unset-environment MYSQLD_OPTS
MySQL 시작
$ systemctl start mysqld
MySQL 로그인
$ mysql -u root -p
정상적으로 로그인이 되는 걸 확인할 수 있다. 그러나 로그인 해서 쿼리를 날려보니까 또 문제가 있다. 아래와 같은 메세지를 출력한다.
You must reset your password using ALTER USER statement before executing this statement.
비밀번호를 재설정하라고 한다. 위에서 재설정을 했는데 왜 그런걸까... 아직 이건 잘 모르겠다. 일단 재설정 해본다.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '비밀번호'; mysql> FLUSH PRIVILEGES;
재설정이 잘 되었다. 다시 한번 쿼리를 날려본다. 그랬더니 또 다음과 같은 메세지를 출력한다.
Your password does not satisfy the current policy requirements
이번에는 재설정한 비밀번호가 MySQL password validation에 맞지 않는다라는 메세지이다.
기존의 잘 사용하던 비밀번호를 바꾸기 싫어서 나는 password validation을 삭제했다. password validation을 지킬려면 비밀번호를 다시 변경하면 될거같다.
MySQL 로그인 후 password validation 삭제
$ mysql -u root -p mysql> uninstall plugin validate_password;
삭제하고 다시 해보니 잘 진행된다. 설치는 잘 된거 같고 마지막으로 사용자 추가와 외부 접근 허용 하는 것이 남았다. 루트는 로컬에서만 접속 가능하고 특정 사용자는 외부에서 접속 가능하도록 설정을 했다.
사용자 추가
mysql> create user '사용자'@'localhost' identified by '비밀번호';
권한 부여
모든 디비에 어디서든 접속할 수 있는 권한을 줬다. 사실 이러면 루트랑 다를 것도 없는데 최소한의 보안을 위해서 이렇게 진행했다.
mysql> grant all privileges on *.* to '사용자'@'%';
외부 접속 허용
외부의 MySQL 워크벤치와 같은 툴에서 접속을 가능하게 하기 위해서 아래의 설정을 추가한다.
$ vi /etc/my.cnf bind-address 0.0.0.0 # 없으면 추가해준다.
출처 : https://cherrypick.co.kr/how-to-install-mysql5-7-in-centos7/
'개발 > linux' 카테고리의 다른 글
[linux] PPTP를 사용해 VPN 서버 만들기 (0) | 2020.06.05 |
---|---|
[linux] 리눅스에서 VPN서버 구축하기 (pptp방식) (0) | 2020.06.05 |
[linux/php] CentOS 7에 yum으로 PHP 5.6을 설치하는 방법 (0) | 2020.05.20 |
[linux] wget certificate 에러 해결 방법 (0) | 2020.04.01 |
[Linux][Centos]에서 MySQL 버전 확인하기 (0) | 2020.03.31 |