본문 바로가기
개발 환경

Docker + CentOS 7 + MySQL 8.0 설치하기

by WangTak 2021. 12. 28.
반응형
  • MySQL 8.0 설치하기, root 임시 비밀번호 확인하기
  • MySQL 8.0 패스워드 정책 확인하기, 변경하기
  • MySQL 8.0 사용자 생성하기, 권한 부여하기

 

설치하기

# centos 7 image 가져오기
docker pull centos:7.8.2003

# docker 실행하기 
docker run --privileged --restart always --name mysqld -p 80:80 -p 443:443 -v C:\Docker\dev:/mnt -dt centos:7.8.2003 /sbin/init

# docker container로 접속 [root 계정으로]
docker exec -it mysqld /bin/bash

## [CentOS 7 & root 계정]

# yum 최신 update
yum -y update

 

Yum 인스톨러를 이용하려면 MySQL 소프트웨어 리포지토리(Repository)를 등록해야 하는데, 이를 위해서는 MySQL 다운로드 페이지에서 RPM 설치 파일을 직접 받아서 설치해야 합니다.

 

설치용 RPM 다운로드 주소 : https://dev.mysql.com/downloads/repo/yum/

 

각 운영체제의 버전에 맞는 Red Hat Enterprise ~~ RPM을 다운로드해서 Volume을 설정한 호스트의 디렉토리로 옮긴후에 다음과 같이 Yum 리포지토리 정보를 등록합니다.

# 설치 파일이 있는 디렉토리에서 명령어를 수행해야 합니다.
# 다운로드 받는 시기마다 .rpm 파일의 이름이 다를 수 있으므로 다운 받으신
# .rpm 파일의 이름을 입력하시면 됩니다.
rpm -Uvh mysql80-community-release-el7-5.noarch.rpm

 

Yum 리포지토리가 등록되면 다음과 같이 MySQL 설치용 RPM 파일들이 저장된 경로를 가진 파일이 생성된 것을 확인할 수 있습니다.

ls -alh /etc/yum.repos.d/*mysql*

 

Yum 인스톨러 명령을 이용해 버전별로 설치 가능한 MySQL 소프트웨어 목록을 확인할 수 있습니다.

yum search mysql-community

# 설치 가능한 모든 버전 확인
yum --showduplicates list mysql-community-server

# 그중에서 8.0.21 을 설치하도록 하겠습니다
yum install -y mysql-community-server-8.0.21

 

설정하기

먼저, root 계정의 password를 알아야 합니다. 초기에 mysql을 설치하면 mysqld.log 파일에 임시 비밀번호가 기록되어 있습니다. 이 이후로는 쭉 명령어를 통해 root 비밀번호를 바꾸고, 계정을 추가하고, 계정에 권한을 부여하는 것 까지 해보도록 하겠습니다.

 

root 계정의 임시 비밀번호 알아내기

grep 'temporary password' /var/log/mysqld.log

MySQL에서 생성한 임시 비밀번호

 

※ 그림에 있는 비밀번호는 MySQL에서 랜덤으로 생성한 비밀번호이기 때문에 다시 설치했을 때는 다른 비밀번호가 노출됩니다.

 

mysql 접속 후 root 계정 비밀번호 변경하기

# mysql 접속
mysql -u root -p
# enter password: /b!uFyqfo9)8 입력!!

 

임시 비밀번호로 접속한 root 계정은 어떤 수행을 하기 위해서는 비밀번호를 사용자가 직접 변경해야 그 이후에 설정을 할 수 있습니다. 그렇지 않으면 다음과 같은 문구가 출력됩니다.

비밀번호 변경 메시지

 

# 비밀번호 변경하기
ALTER USER 'root'@'localhost' IDENTIFIED BY '/b!uFyqfo9)8';
FLUSH PRIVILEGES;

 

Q. 새로운 비밀번호를 기존 임시 비밀번호로 똑같이 변경한 이유?

A. MySQL에는 기본적으로 패스워드 정책이 깔려있는데, 대문자, 소문자, 숫자, 특수기호, 8자 이상 이렇게 좀 까다롭게 설정이 되어있기 때문에 규칙에 맞는 패스워드를 생각하기 귀찮아서 쓰던 임시 비밀번호를 그대로 사용했습니다. [공부 목적이기 때문에 이렇게 진행하였습니다.]

 

※ 패스워드 정책을 낮추고 싶지 않으시면 위에 말씀드린 규칙에 따라 비밀번호를 바꿔주시면 됩니다. 

 

이제는 패스워드 정책을 확인하고, 정책을 낮춰서 새로운 계정을 만들 때 좀 더 편하게 만들겠습니다.

 

MySQL 패스워드 정책 확인하기

use mysql;

SHOW VARIABLES LIKE 'validate_password%';

기본으로 설정되어 있는 패스워드 정책

 

MySQL 패스워드 정책 변경하기

SET GLOBAL validate_password.policy=LOW;
# 위와 같은 규칙이면 validate_password_length도 자유롭게 바꿀 수 있겠죠?
SET GLOBAL validate_password.length=2; # 최소는 4 인거 같습니다.
SET GLOBAL validate_password.mixed_case_count=0;
SET GLOBAL validate_password.number_count=0;
SET GLOBAL validate_password.special_char_count=0;
# 실무에서는 절대 이러면 안됩니다! [간편한 비밀번호 생성을 위해 설정한 것입니다.]

 

MySQL 새로운 계정 만들기

CREATE USER 'wangtak'@'' IDENTIFIED BY '1234';

 

root 계정으로 DB 생성 후 

# 새로운 Databse 생성
CREATE database wangtakDB;

 

새로운 계정에 권한 부여하기

# wangtak 계정에 wangtakDB에 대한 권한을 부여
GRANT ALL PRIVILEGES ON wangtakDB.* to 'wangtak'@'';

# 만약 계정 생성과 권한 부여를 한번에 하고싶다면?
GRANT ALL PRIVILEGES ON wangtakDB.* to 'wangtak'@'' IDENTIFIED BY [Password];

flush privileges;

 

그럼 이제 wangtak 계정으로 로그인하여 show databases를 했을 때 wangtakDB가 있는지 확인해보도록 하겠습니다.

# mysql server를 빠져나와서 centos 7 터미널에서
mysql -u wangtak -p
# Enter password: 1234 입력!

# 그럼 정상적으로 로그인 되는 것을 확인할 수 있습니다.
show databases 
# database 목록에 wangtakDB가 있는 것을 확인할 수 있으며, 사용도 가능함.
use wangtakDB

 

※ root password 갱신하는 거 잊지 마세요!!

 

참조

https://kamang-it.tistory.com/248 - [MySQL] 패스워드 정책 확인, 변경하기

https://jjeongil.tistory.com/1484 - Linux: MySQL 사용자 비밀번호 변경 방법, 예제, 명령어

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791158392703&orderClick=LFR&Kc= - Real MySQL 8.0 책

 

반응형