(1). 준비 작업
MySQL 공식 웹사이트에서 Linux-Generic용 바이너리 패키지를 다운로드하세요. 예를 들어 mysql-5.7.26-linux-glibc2.12-x86_64 버전을 다운로드할 수 있습니다. 다운로드 후 시스템에 이미 설치된 MySQL 또는 MariaDB가 있는지 확인하고, 있다면 제거해야 합니다.
[root@server ~]# rpm -qa | grep mysql
[root@server ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@server ~]# yum -y remove mariadb-libs.x86_64
MySQL 전용 사용자를 생성합니다. 공식 문서에서는 /sbin/nologin 쉘이 권장됩니다.
[root@server ~]# useradd -M -s /sbin/nologin -r dbuser --system
필요한 라이브러리를 설치합니다. CentOS 7에서는 libaio가 필요할 수 있습니다.
[root@server ~]# yum install libaio
MySQL 5.7.19 이상에서는 NUMA 지원을 위해 libnuma 라이브러리가 필요합니다.
(2). 압축 해제 및 데이터 디렉토리 설정
[root@server ~]# tar zxf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@server ~]# cd /usr/local/
[root@server local]# mv mysql-5.7.26-linux-glibc2.12-x86_64/ mysql
[root@server local]# cd mysql/
[root@server mysql]# mkdir data
[root@server mysql]# chown -R dbuser.dbuser /usr/local/mysql/
[root@server mysql]# bin/mysqld --initialize --user=dbuser --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
2019-06-26T07:12:23.842578Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-06-26T07:12:25.699399Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-06-26T07:12:25.920250Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-06-26T07:12:25.998106Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: c03a1dc7-97e1-11e9-acca-000c29e6d627.
2019-06-26T07:12:26.041964Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-06-26T07:12:26.044143Z 1 [Note] A temporary password is generated for root@localhost: jcJ3Ncguf:ql
(3). MySQL 설정 파일 수정
[root@server mysql]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/usr/local/mysql/mysql.sock
character-set-server=utf8mb4
log-error=/var/log/mysqld.log
pid-file=/tmp/mysqld.pid
[mysql]
socket=/usr/local/mysql/mysql.sock
[client]
socket=/usr/local/mysql/mysql.sock
(4). 환경 변수 설정 및 적용
[root@server mysql]# vim /etc/profile.d/db.sh
export PATH=/usr/local/mysql/bin:$PATH
[root@server mysql]# source /etc/profile.d/db.sh
(5). MySQL 서비스 스크립트 생성 및 시작
[root@server mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@server mysql]# chmod +x /etc/init.d/mysqld
[root@server mysql]# vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
[root@server mysql]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!
(6). 테스트 및 root 비밀번호 변경
[root@server mysql]# mysql -uroot -p'jcJ3Ncguf:ql'
mysql> set password for root@localhost=password('newpass123');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show variables like 'validate_password%';
Empty set (0.01 sec)
mysql> exit
Bye
[root@server mysql]# mysql -uroot -pnewpass123
mysql>