개요

RHEL 7 / CentOS 7 부터는 MariaDB 가 탑재되어 있다. MariaDB 5.5 는 MySQL 5.5 와 완벽한 호환성을 보장한다고 한다.

하지만 MySQL 5.6 이상을 지원하는 app 의 경우 MariaDB 5.5 또는 MariaDB 10 이 제대로 도는지 확인하기가 힘드므로 마음고생하지 말고 그냥 권장하는 MySQL 버전을 설치하도록 하자.


RHEL/CentOS 에 수동 설치

MySQL 5.6 부터 yum 을 통한 설치를 지원하고 있다. 

먼저 http://dev.mysql.com/downloads/repo/yum/ 에 연결하여 사용하는 리눅스 배포판과 버전에 맞는 저장소 설정 rpm 파일을 다운로드 받는다.

  1. 모든 패키지가 포함된 bundle 을 다운받는다.

    MySQL 5.7

    wget --no-check-certificate  https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar
    CODE
    wget --no-check-certificate  https://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.40-1.el7.x86_64.rpm-bundle.tar
    CODE
  2. 번들 압축 해제

    tar xvf *bundle.tar
    CODE
  3. yum 으로 설치

    sudo yum localinstall MySQL-server* MySQL-client*
    CODE

Yum 을 통한 설치

MySQL 5.6 부터 yum 을 통한 설치를 지원하고 있다. 

먼저 http://dev.mysql.com/downloads/repo/yum/ 에 연결하여 사용하는 리눅스 배포판과 버전에 맞는 저장소 설정 rpm 파일을 다운로드 받는다.


RHEL / CentOS 7 

MySQL 5.7

MySQL 5.7

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


MySQL 5.6

MySQL 5.6

rpm -ivh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
BASH


RHEL 6 / CentOS 6 / Amazon Linux

MySQL 5.7

rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm
CODE


MySQL 5.6

rpm -ivh http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
CODE



이제 yum 명령어로 mysql 을 설치할 수 있다. yum 을 통해 제공되는 패키지명은 mysql-community 로 시작하므로 yum search mysql-community 명령어로 전체 패키지 목록을 확인해 보자.

yum search

$ sudo yum search mysql-community
BASH

yum search 결과

 
============================================= N/S matched: mysql-community =============================================
mysql-community-bench.x86_64 : MySQL benchmark suite
mysql-community-client.x86_64 : MySQL database client applications and tools
mysql-community-client.i686 : MySQL database client applications and tools
mysql-community-common.i686 : MySQL database common files for server and client libs
mysql-community-common.x86_64 : MySQL database common files for server and client libs
mysql-community-devel.i686 : Development header files and libraries for MySQL database client applications
mysql-community-devel.x86_64 : Development header files and libraries for MySQL database client applications
mysql-community-embedded.i686 : MySQL embedded library
mysql-community-embedded.x86_64 : MySQL embedded library
mysql-community-embedded-devel.i686 : Development header files and libraries for MySQL as an embeddable library
mysql-community-embedded-devel.x86_64 : Development header files and libraries for MySQL as an embeddable library
mysql-community-libs.i686 : Shared libraries for MySQL database client applications
mysql-community-libs.x86_64 : Shared libraries for MySQL database client applications
mysql-community-libs-compat.i686 : Shared compat libraries for MySQL 5.1 database client applications
mysql-community-libs-compat.x86_64 : Shared compat libraries for MySQL 5.1.72 database client applications
mysql-community-release.noarch : MySQL repository configuration for yum
mysql-community-server.x86_64 : A very fast and reliable SQL database server
mysql-community-test.x86_64 : Test suite for the MySQL database server
BASH


이중에서 다음과 같은 패키지를 설치하면 된다.

  • mysql-community-server : 서버
  • mysql-community-client: 명령행 클라이언트

  • mysql-community-libs : 

  • mysql-community-common : 

mysql-community-server 는 나머지 3개 패키지에 의존성이 걸려 있으므로 다음 yum 명령어는 4 개의 패키지를 전부 설치한다.

yum install mysql-community-server
CODE

기본 chracter-set 이 latin1 이므로 /etc/my.cnf 를 수정해서 utf-8 로 설정한다.( CentOS 6 에 yum 으로 MySQL 5.5 설치 참조)

amazon Linux 는 yum clean all 명령어를 사전에 수행하지 않으면 dependency 오류가 나서 제대로 설치되지 않음.


설치 완료후에 MySQL 을 구동한다.

systemctl start mysqld
CODE


root 암호와 보안 설정을 위해 mysql_secure_installation  를 실행한다.

mysql_secure_installation  
CODE


MySQL 패키지 버전에 따라 설치시 자동으로 mysql_secure_installation 을 실행하는 경우도 있으니 설치후 콘솔 화면을 보고 암호가 저장되는 경로는 확인

CentOS 에서는 초기 암호가 /root/.mysql_secret 에 저장되는 경우가 있음.

A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in '/root/.mysql_secret'.

You must change that password on your first connect,
no other statement but 'SET PASSWORD' will be accepted.
See the manual for the semantics of the 'password expired' flag.

Also, the account for the anonymous user has been removed.
CODE


또는 다음 명령어로 초기 암호를 획득

$ grep 'password' /var/log/mysqld.log
CODE


Ubuntu 에 설치

  1. https://dev.mysql.com/downloads/repo/apt/ 에서 저장소 패키지 다운로드

    wget https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb
    CODE
  2. 저장소 패키지 설치

    sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
    CODE

  3. 화면에서 MySQL Server  를 선택하고 엔터키 입력하고 MySQL 버전 지정
  4. MySQL 패키지 정보 업데이트

    sudo apt update
    CODE



  5. 설치

    sudo apt install mysql-server
    CODE

MySQL 저장소 정보는 /etc/apt/sources.list.d/mysql.list 에 저장됨


systemd 연동

시스템 부팅시 자동 구동되도록 설정

systemctl enable mysqld
systemctl restart mysqld
CODE



암호 정책 변경

기존 암호 규칙을 사용하기 위해 password 정책 수정

echo 'validate_password_policy=LOW' >> /etc/my.cnf
echo 'default_password_lifetime=0' >> /etc/my.cnf
CODE


재구동

systemctl restart mysqld
CODE

구동되었으면 다음 명령어로 임시로 생성된 루트 패스워드를 알수 있다.

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


처음 로그인하면 다음 명령어로 root 암호를 변경

mysql> set password=password('qwert123');
CODE


변경된 암호 적용

flush privileges;
CODE


같이 보기

Ref