[MySQL][Install] - 5.7+CentOS 7-Source 설치

MySQL에서 제공하는 Source 이용해서 Compile 설치하는 방법입니다.

리눅스 명령어가 익숙하고, 다른 Open Source 프로그램을 Compile방법을 이용해 설치를 경험이 있다면 편하게 하실 있습니다.

이전에는 mysql autools 이용한 configure 명령으로 빌드 환경을 구성하고 컴파일을 진행했는데 이제는 cmake라는 것이 autotools 대체했습니다. 하지만 다른 opensource project 여전히 autotools 많이 이용하고 있습니다. 그러나 조금씩 cmake 넘어오는 추세입니다.

 

먼저 Source Code 설치를 하기 위해선 OS 몇가지 필요 Package(프로그램) 설치해야 합니다.

이게 설치가 되어 있어야 Source Code Compile 됩니다. 필요 Package 다음과 같습니다.

 

필수 설치 패키지 리스트 설치 확인

그냥 모르고 설치하는것보다는 필수 패키지가 어떤 역활을

하는지 알면 좋을것 같아 같이 설명드립니다. 그리고 패키지 설치후 설치가 되었는지 확인하는 방법도 같이 설명드리겠습니다.

참고로 모든 설치는 root 진행됩니다.

shell > su - root

 

+ cmake

패키지설명

make 소스관리 문제점을 개선시켜 새롭게 나온 빌드 프레임워크 프로그램입니다. 기존 make보다 좀더 편리하게 관리하고 빌드되도록 만든 프로그램입니다. 

centos 7.x 이상은 지원이 되며 6.x이하는 수동으로 설치해 주어야 합니다.

참고 URL : http://www.cmake.org.

 

설치방법 확인방법

OS설치시 개발자 옵션을 선택하셨다면 설치가 되어 있습니다.

shell > rpm -qa | grep -i cmake

cmake-2.8.12.2-2.el7.x86_64

위와 비슷한 결과가 나오지 않으면 설치를 합니다.

shell > yum install cmake

 

+ make

* 패키지 설명

직접 소스를 빌드하는 프로그램입니다. 소스를 빌드하여 기계어로 만들어주는 핵심적인 역활을 하는 프로그램입니다. 반드시 설치하셔야 합니다. GNU make 3.75 이상 버전을 강력히 권고합니다.

 

설치방법 확인방법

OS설치시 개발자 옵션을 선택하셨다면 설치가 되어 있습니다.

shell> rpm -qa | grep -i make

make-3.82-24.el7.x86_64

위와 비슷한 결과가 나오지 않으면 설치를 합니다.

shell > yum install make

 

+ Ansi c++컴파일러

* 패키지설명

ANSI C++ compiler 필요합니다.  4.2.1 이상이 필요합니다. Mysql 소스로 제공되므로 컴파일 과정이 반드시 필요한데 패키지가 역활을 해줍니다.

그런데 centos에서 얘기하는 C 혹은 C++ 라이브러리는 다음과 같은 것들을 얘기한다고 합니다.

1 .autoconf

2. automake

3. binutils

4. bison

5. flex

6. gcc (c compiler)

7. gcc-c++ (c++ compiler)

8. gettext

9. libtool

10. make

11. patch

12. pkgconfig

13. redhat-rpm-config

14. rpm-build

15. rpm-sign

그래서 한꺼번에 설치하는 방법을 사용합니다.

 

설치방법

shell > yum group install "Development Tools”

이렇게 하면 개발관련된 모든 패키지들을 자동으로 설치하게 됩니다.

물론 C, C++ Ansi 라이브러리도 설치가 됩니다

혹시 OS설치시 개발자 옵션을 선택하셨다면 설치가 되어 있습니다.

 

+ Openssl

* 패키지설명

OpenSSL 네트워크를 통한 데이터 통신에 쓰이는 프로토콜인 TLS SSL 오픈 소스 구현판입니다. C 언어로 작성되어 있는 중심 라이브러리 안에는, 기본적인 암호화 기능 여러 유틸리티 함수들이 구현되어 있스니다. WITH_SSL 옵션을 이용하여 설정합니다.

 

* 설치방법

shell > rpm -qa | grep -i openssl

openssl-libs-1.0.2k-19.el7.x86_64

openssl-1.0.2k-19.el7.x86_64

openssl-devel-1.0.2k-19.el7.x86_64

없다면 설치 진행합니다.

shell > yum install openssl openssl-devel

 

+ ncurses library

* 패키지설명

프로그래머가 텍스트 사용자 인터페이스를 터미널 독립 방식으로 기록할 있도록 API 제공하는 프로그래밍 라이브러리입니다. GUI같은 응용 소프트웨어를 개발하는 툴킷이라고 합니다.

 

설치방법

OS설치시 개발자 옵션을 선택하셨다면 설치가 되어 있습니다.

shell > rpm -qa | grep -i ncurses

ncurses     

ncurses-base

ncurses-libs

ncurses-devel

없다면 설치 진행합니다.

shell > yum install ncurses ncurses-base ncurses-libs ncurses-devel

위의 설치 화면이 나오는지 확인합니다.

 

+ perl 관련

* 패키지설명

스크립트 언어입니다. 터미널에서 작성해서 바로 수행이 가능하며 python 비슷한 특징을 가진 언어입니다. perl 관련 스크립트를 작성하려면 설치가 필요합니다.

 

* 설치방법

OS설치시 개발자 옵션을 선택하셨다면 설치가 되어 있습니다. 위의 그룹 설치인 yum group install "Development Tools” 설치를 하셨다면 이미 설치가 되었을 겁니다.

shell > rpm -qa | grep -i perl

perl-parent-0.225-244.el7.noarch

perl-Pod-Escapes-1.04-294.el7_6.noarch

perl-libs-5.16.3-294.el7_6.x86_64

perl-threads-1.87-4.el7.x86_64

perl-constant-1.27-2.el7.noarch

perl-File-Temp-0.23.01-3.el7.noarch

perl-Pod-Simple-3.28-4.el7.noarch

이외 많은 것들이 출력됩니다.

 

따로 설치를 원할 아래와 같이 입력하고 설치합니다.

shell > yum install perl

 

+ gnu tar

mysql source gnu tar라는 압축툴로 압축되어 있습니다. 압축을 풀려면 설치가 필요하나 기본적으로 설치가 되어 있습니다.

 

+ git

* 패키지설명

mysql 관련해서 소스를 배포해보고 싶으시다거나 엔지니어로써 참여를 원하시면 git 설치를 하셔야 합니다.

 

* 설치방법

OS설치시 개발자 옵션을 선택하셨다면 설치가 되어 있습니다.

shell > rpm -qa | grep -i git

git-1.8.3.1-20.el7.x86_64

없다면 설치 진행합니다.

shell > yum install git

 

+ bison

* 패키지설명

GNU 파서 생성기로 yacc 개선하고 대체하기 위해 만들어졌습니다. 프로그램 도구는 LALR 방식으로 작성된 문법을 처리하고 해석하여 C코드로 만들어 줍니다. 흔히 사칙 계산기부터 고도의 프로그래밍 언어까지 다양한 범위의 언어를 만드는데 사용할 있습니다.

버전은 2.1 이상을 설치하셔야 합니다. 

 

* 설치방법

OS설치시 개발자 옵션을 선택하셨다면 설치가 되어 있습니다.

shell > rpm -qa | grep -i bison

bison-3.0.4-2.el7.x86_64

없다면 설치 진행합니다.

yum > install bison

 

+ m4

Solaris Express 설치하신다면 m4 반드시 설치되야 합니다. bison 더불어 설치되어야 합니다. 우린 centos 설치되므로 넘어가셔도 됩니다.

 

+ boost

* 패키지설명

각종 데이터 구조와 알고리즘을 모아둔 C++라이브러리 입니다. 거의 표준 패키지로 봐도 무관할만큼 우수한 라이브러리 모임이라고 합니다. 여러 개발자들이 개발에 참여했으며 게임서버나 기타 연산 성능이 필요한 곳에 많이 쓰인다고 합니다. 이건 mysql에서 몇가지 옵션으로 자동으로 다운로드 설치가 됩니다. 그러나 인터넷이 안되는 환경을 위해 boost library 포함된 mysql 제공하고 있습니다.

 

 

 

MySQL 옵션 설정 빌드와 설치

먼저 mysql 소스를 받아야 합니다.

https://dev.mysql.com/download

이곳으로 가면 아래 download archive라는곳이 있습니다. 이곳에서 5.7버전을 다운로드 받을 있습니다. 현재 mysql 최신 버전은 8.x 5.7 이하 버전을 받을시에는 이곳으로 가셔서 다운로드 받으셔야 합니다.

직접적으로 url 가셔도 됩니다.

https://downloads.mysql.com/archives/community/

 

페이지에 가서 아래 product version 5.7 최신 버전으로 선택합니다. 기준으로는 5.7.27 되겠습니다. 그리고 Operating System Source 선택합니다.

아래 2가지 버전이 있는데 첫번째는 boost library 없는 압축 파일입니다.

Generic Linux (Architecture Independent), Compressed TAR Archive

 

아래는 boost library 포함된 파일입니다.

Generic Linux (Architecture Independent), Compressed TAR Archive

Includes Boost Headers

 

먼저 mysql에서 사용할 계정을 만들어 줍니다. mysql 내부적으로 mysql이라는 계정을 이용해서 엔진을 컨트롤합니다.

 

shell> groupadd mysql

shell> useradd -r -g mysql -s /bin/false mysql

 

mysql 소스를 받은 디렉토리로 이동합니다.

디렉토리로 이동해 소스를 풀어주고 압축을 디렉토리로 이동합니다.

shell> tar zxvf mysql-VERSION.tar.gz

shell> cd mysql-VERSION

 

압축을 풀고 본격적으로 빌드환경에 필요한 cmake 실행합니다. 이때 어떤 옵션들을 설정할지 또는 활성화시키고 중지시킬지 결정해야 합니다. cmake 대한 옵션들의 자세한 설명은 mysql 홈페이지의 기술문서에 나와 있습니다. 또한 터미널에서도 명령을 통해 확인이 가능합니다. 어떤 옵션들이 있는지 확인해 보고 싶으시면 다음과 같은 명령어를 입력하시면 확인해 보실 있습니다.

shell> cmake .. -L   # 옵션에 대해 간략히 보기

shell> cmake .. -LH  # 옵션에 대한 도움말

shell> cmake .. -LAH # 모든 파라미터에 대한 설명 도움말

shell> cmake ..     # interactive display

 

참고) MySQL 공식 홈페이지의 옵션 상세 설명 페이지.

https://dev.mysql.com/doc/mysql-sourcebuild-excerpt/5.7/en/source-configuration-options.html

 

일단 어느정도 다양한 기능이 지원되는 빌드 환경으로 만들어 보겠습니다.

여기에서 빌드되어 생성된 기능들은 따로 차차 설명드리겠습니다.

 

아래 내용은 제가 주로 사용하는 cmake 빌드 환경 구성시 사용하는 옵션입니다. 생각에는 이정도면 필요한 왠만한 기능들은 지원되지 않을까 생각합니다. 이외 필요하신 옵션이 있다면 사용하시면 됩니다.

<컴파일 옵션 설명 예제>

-DCMAKE_INSTALL_PREFIX : 설치 디렉토리

-DWITH_BOOST=directory : 다운로드한 boost 위치시킬 디렉토리 위치

-DDOWNLOAD_BOOST=1 : boost library 없을시 자동으로 다운로드

-DSYSCONFDIR : my.cnf 파일 기본 위치

-DWITH_ARCHIVE_STORAGE_ENGINE=1 : archive storage engine 사용

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 : 블랙홀 엔진 사용여부

-DWITH_EXAMPLE_STORAGE_ENGINE=1 : 예제 생성 엔진 사용여부

-DWITH_FEDERATED_STORAGE_ENGINE=1 : 이기종 DB 연결 엔진

-DWITH_PARTITION_STORAGE_ENGINE=1 : 파티션(파티셔닝) 엔진 사용여부

-DENABLED_PROFILING : 프로파일링 기능 사용 여부

-DWITH_CURL=system or curl directory : CURL 외부 CURL사용할지 System CURL사용할지 여부

-DOPTIMIZER_TRACE=1 : 옵티미아저 트레이스 사용 여부

-DWITH_UNIXODBC=1 : ODBC 사용여부

-DWITH_INNODB_MEMCACHED=1 : 멤캐쉬 스토리지 사용여부

-DWITH_NUMA=on : Linux Numa 시스템 사용여부

-DWITH_SSL=system or directory : ssl 사용여부

-DWITH_ZLIB : 압축기능을 사용하는 위치. 시스템 혹은 번들

-DMYSQL_TCP_PORT : 3306 이외에 다른 포트를 지정하고 싶을때 사용

-DMYSQL_UNIX_ADDR : Unix Socket File 위치를 지정하고 싶을때 사용. 기본은 /tmp/mysql.sock

-DWITH_LIBWRAP=1 : 시스템 관리자의 요청으로 Tcp Wrapper 사용해야 할시 사용합니다(호스트서버의 hosts.allow hosts.deny 파일을 이용해서 클라이언트 접속 허용 여부를 설정함.).

-DWITH_SYSTEMD=1 : centos 7이상부터 지원됩니다. systemd라는 시스템 관리툴을 이용해서 MySQL 제어합니다. systemctl 툴을 이용하지 않고 mysqld_safe 서버를 제어하고 싶다면 옵션은 제거합니다. 또한 옵션 활성화시 mysqld_safe, mysqld_multi 같은 스크립트가 설치되지 않고 대신 mysqld_pre_systemd 설치됩니다.

여기서 NUMA 기능과 libwrap기능은 시스템 환경설정이 별도로 필요한 기능들입니다. 포스트의 범위를 벗어남으로 별도로 기회가 설명드리겠습니다.

또한 위의 환경설정은 기본 위치를 정할 , 추후 환경설정파일에서 다시 위치를 지정할 있습니다.

 

<컴파일 옵션 예제>

cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DSYSCONFDIR=/etc \

-DWITH_BOOST=/usr/local/src/boost \

-DDOWNLOAD_BOOST=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_EXAMPLE_STORAGE_ENGINE=1 \

-DWITH_FEDERATED_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DENABLED_PROFILING=1 \

-DWITH_CURL=system \

-DOPTIMIZER_TRACE=1 \

-DWITH_INNODB_MEMCACHED=1 \

-DWITH_SSL=system \

-DWITH_ZLIB=bundled

 

조금 기다리시면 터미널에 아래 메세지가 떨어지는데 특별한 에러가 보이지 않는다면 빌드환경 구성이 성공한겁니다. 만약 에러가 떨어지면 이유를 분석해 필수 필요패키지를 추가로 설치하거나, 해당 패키지에 대한 환경 구성을 다시 해주거나, 옵션 변경을 통해 해결해 주어야 합니다.

 

이제 컴파일을 해보도록 하겠습니다.

 

shell> make

오래 시간이 걸립니다. 40 이상 될수도 있습니다. 서버 사양에 따라 다릅니다. 컴파일이 진행되다가 멈추는 경우도 가끔 있는데 이때는 원인을 찾아서 해결을 해주어야 합니다.

 

shell> make test

컴파일된 프로그램을 전체적으로 테스트를 합니다.

 

shell> make install

위에 install prefix 지정된 디렉토리에 설치를 진행합니다.

 

후속작업

설치가 끝났으니 후속작업을 진행해야 합니다.

먼저 mysql data들이 설치될 있는 디렉토리를 만들어주어야 합니다. 보통 설치경로 밑에 ‘data’ directory 만들고 여기다 설치를 합니다.

우리가 설치한 디렉토리는 /usr/local/mysql 입니다. 이곳으로 디렉토리를 옮겨서 data directory 생성합니다.

그리고 디렉토리의 권한을 바꾸어 줍니다.

shell> cd /usr/local/mysql

shell> mkdir data

shell> chown mysql:mysql data

shell> chmod 750 data

 

초기 MySQL 환경 설정

mysql install 완료하게 되면 /etc/my.cnf /etc/my.cnf.d 라는 파일들이 생깁니다.

my.cnf 몇가지 파라미터 설정이 필요한데 다음과 같이 파라미터를 초기화 해줍니다.

vi /etc/my.cnf

[mysqld]

datadir=/usr/local/mysql/data

socket=/tmp/mysql.sock

 

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

 

[mysqld_safe]

log-error=/var/log/mysqld.err

pid-file=/usr/local/mysql/data/mysqld.pid

 

이제부터 2가지 관리방식으로 나뉘게 됩니다.위의 컴파일 옵션중 -DWITH_SYSTEMD 옵션에 따라 나뉘게 됩니다.

위에서 설명드렸듯이 -DWITH_SYSTEMD옵션을 1 주었다면 시스템에서 관리되는 방법(systemctl 이용하는) 이용하는것이고 옵션을 주지 않았다면 직접 관리하는 방법이 됩니다.

 

직접 관리하는 방법[systemctl 이용하지 않는 방법. -DWITH_SYSTEMD 옵션을 주지 않음]

암호를 초기화하는 방법은 다음 두가지 방법이 있는데 하나는 일반 초기화입니다. root password 자동으로 부여해 줍니다. 하나는 추후 root패스워드를 생성하는 방법입니다.

 

* 초기 root 암호 생성 초기화방법

shell > cd /usr/local/mysql

shell > bin/mysqld --initialize --user=mysql

 

* 초기 root암호 생성 초기화

shell > cd /usr/local/mysql

shell > bin/mysqld --initialize-insecure --user=mysql

 

우리는 root암호 생성 초기화 방법으로 수행합니다. 그런데 조금더 옵션을 붙여서 수행합니다.

shell> bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql

수행 마지막에 보면 root password 생성이 됩니다. 적어둡니다.

 

이렇게 하면 data디렉토리에 mysql 관련 파일들이 설치되어 있는걸 확인해 보실 있습니다.

shell > cd /usr/local/mysql/data

shell > ls -al

 

ssl 관련 환경도 구성합니다.

shell > bin/mysql_ssl_rsa_setup

 

이제 MySQL 실행해보겠습니다.

shell > bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &

Starting MySQL. SUCCESS!

 

반드시 뒤에 & 붙입니다. 백그라운드로 실행하겠다는 옵션입니다.

엔진이 실행되었으니 mysql 접속해 보겠습니다.

 

shell> mysql -u root -p

password

암호를 입력합니다.

mysql > show databases;

performance_schema

mysql

tmp

information_schema

mysql>

 

mysql 접속 테스트가 이상없이 실행되었습니다.

 

로그인 반드시 root 암호를 변경해 줍니다. 처음에 제공된 암호는 만료가 되는 암호이므로 반드시 변경하셔야 합니다.

참고로 강력한 암호(숫자.영문.영문대문자.특수문자등이) 설정되지 않으면 다음과 같은 에러가 발생합니다. 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY ‘admin1234'; 

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

 

mysql> alter user 'root'@'localhost' identified by '!MyNewPass4'; 

초기 암호 정책에 따라 대소문자,특수문자,숫자가 반드시 석여야 합니다.

이렇게 하면 root 암호가 변경됩니다. 

 

엔진의 종료 방법은 다음과 같습니다.

shell > bin/mysqladmin -uroot -p shutdown

Enter password: 

암호를 입력하면 mysql server 종료됩니다.

 

 

 

시작 및 종료 스크립트 설정

위에 있는 mysql 서버 시작 방법으로 시작하면 명령를 기억하기도 까다롭고 수행하기도 어렵습니다. 그래서 mysql 서버 시작 스크립트를 제공하고 있습니다.

shell> cp support-files/mysql.server /etc/init.d/mysqld

 

이렇게 복사를 해주신다음 mysql서버를시작할때는 다음과 같이 해줍니다.

shell > /etc/init.d/mysqld start

Starting MySQL. SUCCESS!

 

중지할때는 다음과 같이 해줍니다.

shell > /etc/init.d/mysqld stop

Shutting down MySQL.. SUCCESS! 

 

시스템 관리를 통하여[systemctl 이용하는 방법. -DWITH_SYSTEMD 옵션을 1 지정]관리하는 방법.

옵션을 설정하였다면 위에 설명했던 mysqld_safe라는 시작 스크립트가 없습니다. 대신 별도의 스크립트를 만들어 수행해야 합니다.

다음의 위치에 다음 파일을 만듭니다.

위치 : /usr/lib/systemd/system/mysqld.service

mysqld.service 파일에 다음의 내용을 입력합니다.

[Unit]

Description=MySQL Server

Documentation=man:mysqld(8)

Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html

After=network.target

After=syslog.target

 

[Install]

WantedBy=multi-user.target

 

[Service]

User=mysql

Group=mysql

Type=forking

PIDFile=/var/run/mysqld/mysqld.pid

 

# Disable service start and stop timeout logic of systemd for mysqld service.

TimeoutSec=0

 

# Execute pre and post scripts as root

PermissionsStartOnly=true

 

# Needed to create system tables

ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd

 

# Start main service

ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS

 

# Use this to switch malloc implementation

EnvironmentFile=-/etc/sysconfig/mysql

 

# Sets open_files_limit

LimitNOFILE = 5000

Restart=on-failure

RestartPreventExitStatus=1

PrivateTmp=false

그리고 터미널에 다음과 같이 입력해 줍니다.

shell > systemctl enable mysqld.service

Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.

위와 같은 결과가 나옵니다.

 

MySQL서버를 시작합니다.

shell > systemctl start mysqld.service

 

상태를 확인합니다.

shell > systemctl status mysqld.service
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2019-12-25 21:49:50 KST; 7s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 2269 ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 2199 ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 2272 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─2272 /usr/local/mysql/bin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Dec 25 21:49:50 mysql57 mysqld[2269]: 2019-12-25T12:49:50.365100Z 0 [Note] InnoDB: Buffer pool(s) load completed at 191225 21:49:50
Dec 25 21:49:50 mysql57 mysqld[2269]: 2019-12-25T12:49:50.370536Z 0 [Note] Skipping generation of SSL certificates as options related to SSL are specified.
Dec 25 21:49:50 mysql57 mysqld[2269]: 2019-12-25T12:49:50.371370Z 0 [Warning] CA certificate /home/certs/ca.pem is self signed.
Dec 25 21:49:50 mysql57 mysqld[2269]: 2019-12-25T12:49:50.371447Z 0 [Note] Skipping generation of RSA key pair as key files are present in data directory.
Dec 25 21:49:50 mysql57 mysqld[2269]: 2019-12-25T12:49:50.372182Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
Dec 25 21:49:50 mysql57 mysqld[2269]: 2019-12-25T12:49:50.372869Z 0 [Note] IPv6 is available.
Dec 25 21:49:50 mysql57 mysqld[2269]: 2019-12-25T12:49:50.372902Z 0 [Note]   - '::' resolves to '::';
Dec 25 21:49:50 mysql57 mysqld[2269]: 2019-12-25T12:49:50.372931Z 0 [Note] Server socket created on IP: '::'.
Dec 25 21:49:50 mysql57 mysqld[2269]: 2019-12-25T12:49:50.381889Z 0 [Note] Event Scheduler: Loaded 0 events
Dec 25 21:49:50 mysql57 systemd[1]: Started MySQL Server.

위와 같은 결과가 나옵니다.

 

mysql 에러로그(정보로그) 시스템과 통합되어 /var/log/message 쌓이게 됩니다. 파일을 열어보면 초기 root암호가 나옵니다. 아래와 같은 내용과 비슷하게 출력이 됩니다.

 

[Note] A temporary password is generated for root@localhost: ioPDPo%<8,;H

 

로그인을 시도합니다.

shell> mysql -u root -p

password

 

암호를 입력합니다.

mysql > show databases;

performance_schema

mysql

tmp

information_schema

mysql>

 

로그인 반드시 root 암호를 변경해 줍니다. 처음에 제공된 암호는 만료가 되는 암호이므로 반드시 변경하셔야 합니다.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '<신규 root 암호>';

 

MySQL 서버 중지방법은 다음과 같습니다.

shell > systemctl stop mysqld.service

 

원격 설정

centos, rhel 기본적으로 방화벽이 설정되어 있습니다. 그래서 Mysql 접속할 있도록 port 오픈해 주어야 접속이 가능합니다. 기본 포트는 3306입니다. 

 

다음과 같이 방화벽 포트를 오픈해 줍니다. 

 

centos6 

iptables -A INPUT -p tcp --dport 3306 -j ACCEPT  

 

centos7 

firewall-cmd --permanent --zone=dmz --add-service=mysql

firewall-cmd --permanent --zone=public --add-port=3306/tcp

firewall-cmd --reload

firewall-cmd --list-ports

이래야 원격에서 mysql 접속할 있습니다. 

 

Designed by JB FACTORY