2018년 12월 23일

CentOS 7.x 에서 MySQL 8.x 설치하기

1. MySQL 설치하기

MySQL 을 yum 명령을 사용하여 설치하는 것은, 사실은 MariaDB 를 설치하는 것이다. 설치를 위하여 먼저 MySQL패키지 정보를 제공하는 MySQL community Yum Repository 사이트를 방문해야 한다.



설치를 원하는 패키지 이름을 선택한 다음 다운로드를 위한 링크를 아래와 같이 완성한다.

#wget http://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm

아래와 명령으로 먼저 레파지토리를 추가한다.
#sudo rpm -ivh mysql80-community-release-el7-1.noarch.rpm

이제 MySQL 서버를 설치한다.
# yum install mysql-server

2. MySQL 시작하기

MySQL 서버는 다음 명령으로 시작한다.
# systemctl start mysqld
시작이후에는 다음 명령으로 서버 상태를 확인할 수 있다.
# systemctl status mysql



서버 설치 과정에서 임시 비밀번호가 생성되는데 이는 아래의 명령으로 확인할 수 있다.
# grep 'temporary password' /var/log/mysqld.log

3. MySQL 설정

MySQL 기본적으로 조금은 안전하지 않는 디폴트 설정(원격 )을 위한 보안 관련 옵션들 설정을 위한 보안 스크립트를 제공하고 있는데 아래와 같은 명령으로 실행할 수 있다.


 /usr/bin/mysql_secure_installation


스크립트를 실행하면 새로운 root 비밀번호 설정, 원격 익명 사용자 계정 제거, 로컬 이외의 곳에서 root접근 비활성, 데트트 데이터베이스 제거를 선택할 수 있다. 비밀번호는 12자리 이며 1이상의 대문자 + 1개이상의 소문자 + 1개이상의 숫자 + 1개이상의 특수문자조합으로 생성해야 한다.

자세한 건 다음 링크를 참고한다.
MySQL Reference Manual



추가로 다음의 명령을 통하여 원격 접속을 위한 방화벽을 설정한다. 

#firewall-cmd --zone=public --permanent --add-service=mysql


4. MySQL 테스트 하기

설치 및 설치 정보를 확인하기 위하여 mysqladmin 도구를 사용하여 접속한다.
#mysqladmin -u root -p version
다음과 유사한 메시지를 보게된다.
mysqladmin  Ver 8.0.13 for Linux on x86_64 (MySQL Community Server - GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version  8.0.13
Protocol version 10
Connection  Localhost via UNIX socket
UNIX socket  /var/lib/mysql/mysql.sock
Uptime:   21 hours 59 min 10 sec

Threads: 2  Questions: 13095  Slow queries: 0  Opens: 395  Flush tables: 2  Open tables: 222  Queries per second avg: 0.165

4. MySQL 계정생성 하기

 이제 새로운 데이터베이스와 계정을 생성한다. 여기에서는 데이터베이스 이름은  testdb , 새로운 사용자 이름은  testuser , 그리고  비밀번호는 password 를 사용했다. 먼저 아래와 같이 MySQL shell 을 실행한다.

mysql -u root -p

이제 아래와 같은 스크립트를 사용하여 데이터베이스 및 사용자를 생성한다.
-- testdb 생성
CREATE DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- test 계성 생성
CREATE USER 'test'@'%' IDENTIFIED BY 'password';
-- testdb에 대한 권한을 test 에게 부여한다. 
GRANT ALL PRIVILEGES ON testdb.* TO 'test'@'%' WITH GRANT OPTION;



이제 클라언트에서 새롭게 생성한 계정으로 접속을 한다. 프로그램은 "MySQL Workbench"를 사용했다.
접속시에 아래와 같은 오류가 발생하는 경우 두가지 방법인 있다. 이는 MySQL 8.x버전부터는 caching_sha2_password 을 지원하고 있는데 이전 버전의 클라이언트 버전들은 지원하고 있지 않아서다.

authentication plugin 'caching_sha2_password'
cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2):
image not found

  1. 서버에 default-authentication-plugin=mysql_native_password 설정을 추가한다.
  2. "MySQL Workbench" 프로그램은 최신 버전으로 업데이트 한다.

이글에서는 클라이언트 버전을 최신 버전으로 업데이트 하여 사용하였다.


댓글 없음:

댓글 쓰기