해당 페이지에서는 LINUX 설치 방법을 다룬다.
엔터프라이즈와 커뮤니티는 5.5버전부터 기능이 달라졌고, 엔터프라이즈 소스코드는 비공개 되었다.
엔터프라이즈 에디션 추가 기능
- Thread Pool
- Enterprise Audit
- Enterprise TDE(Master Key 관리)
- Enterprise Authentication
- Enterprise Firewall
- Enterprise Monitor
- Enterprise Backup
- MySQL 기술지원
설치환경
YUM | RPM | |
---|---|---|
HOSTNAME | 191 | 192 |
OS | CenOS6.7 | CenOS6.6 |
MySQL 다운로드 페이지/아카이브
추가 변경사항이 필요한경우 도큐먼트 참조
다운로드페이지에서 다운로드
웹겟을 사용하여 다운로드
MySQL 다운로드페이지에서는 MySQL8.0 리포지토리 RPM만 제공한다. MySQL 8.0미만 버전의 리포지토리를 가쟈오려면 다음처럼 웹겟을 사용하면 된다.
$ wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
[root@191 mysql]# ls -al
합계 51672
drwxr-xr-x. 2 root root 4096 2022-03-15 13:38 .
drwx------. 5 minstone minstone 4096 2022-03-15 13:37 ..
-rw-r--r--. 1 root root 52891142 2021-06-07 17:24 mysql-boost-5.7.34.tar.gz
-rw-r--r--. 1 root root 11012 2022-03-15 13:38 mysql80-community-release-el6-5.noarch.rpm
[root@191 mysql]# sudo rpm -Uvh mysql80-community-release-el6-5.noarch.rpm
경고: mysql80-community-release-el6-5.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
준비 중... ########################################### [100%]
1:mysql80-community-relea########################################### [100%]
[root@191 mysql]# ls -alh /etc/yum.repos.d/*mysql*
-rw-r--r--. 1 root root 2.1K 2022-01-11 22:24 /etc/yum.repos.d/mysql-community-source.repo
-rw-r--r--. 1 root root 2.1K 2022-01-11 22:24 /etc/yum.repos.d/mysql-community.repo
[root@191 mysql]# sudo yum --showduplicates list mysql-community-server
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* epel: ftp.iij.ad.jp
Available Packages
mysql-community-server.x86_64 8.0.11-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.12-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.13-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.14-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.15-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.16-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.16-2.el6 mysql80-community
mysql-community-server.x86_64 8.0.17-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.18-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.19-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.20-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.21-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.22-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.23-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.24-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.25-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.26-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.27-1.el6 mysql80-community
mysql-community-server.x86_64 8.0.28-1.el6 mysql80-community
버전의 경우 패키지명뒤에 '-'로 구분해서 입력
[root@191 mysql]# sudo yum install mysql-community-server-8.0.28
=================================================================================================================
Package Arch Version Repository Size
=================================================================================================================
Installing:
mysql-community-server x86_64 8.0.28-1.el6 mysql80-community 744 M
Installing for dependencies:
mysql-community-client x86_64 8.0.28-1.el6 mysql80-community 79 M
mysql-community-client-plugins x86_64 8.0.28-1.el6 mysql80-community 8.1 M
mysql-community-common x86_64 8.0.28-1.el6 mysql80-community 837 k
mysql-community-icu-data-files x86_64 8.0.28-1.el6 mysql80-community 2.1 M
mysql-community-libs x86_64 8.0.28-1.el6 mysql80-community 6.8 M
Transaction Summary
=================================================================================================================
Install 6 Package(s)
Total download size: 841 M
Installed size: 3.4 G
Is this ok [y/N]:
.
.
.
Installed:
mysql-community-server.x86_64 0:8.0.28-1.el6
Dependency Installed:
mysql-community-client.x86_64 0:8.0.28-1.el6 mysql-community-client-plugins.x86_64 0:8.0.28-1.el6 mysql-community-common.x86_64 0:8.0.28-1.el6 mysql-community-icu-data-files.x86_64 0:8.0.28-1.el6
mysql-community-libs.x86_64 0:8.0.28-1.el6
Complete!
💡 CentOS 6 버전은 YUM/RPM으로 설치시에도 Initialize 작업을 별도로 진행 해야 함.
[root@191 lib]# mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql
[root@191 lib]# service mysqld start
mysqld (을)를 시작 중: [ OK ]
우분투 명령어 | CentOS6 명령어 | CentOS7 명령어 | |
---|---|---|---|
시작 | service mysql start | service mysql start | systemctl start mysqld |
정지 | service mysql stop | service mysql stop | systemctl start stop |
재시작 | service mysql restart | service mysql restart | systemctl start restart |
상태확인 | service mysql status | service mysql status | systemctl start status |
리눅스 서버에서 yum,rpm을 사용해 MySQL서버를 설치하면 서버에 필요한 프로그램,디렉터리는 일부 준비되지만, 로그파일과 데이터파일은 따로 생성하는 과정을 거쳐야 한다.
설치 시 기본적인 옵션만 가지는 /etc/my.cnf 파일이 생성되며 아래 구문으로 데이터파일을 생성한다.
자동으로 생성된 my.cnf는 운영을 하기에는 부족한 상태이기에 설정옵션을 추가 해 주어야 한다.
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
~
트랜잭션로그파일(redo log)과 시스템 테이블 생성과정
--initialize-insecure 옵션은 패스워드가 없는 관리자 계정을 생성하며 --initialize 옵션으로 사용 시 관리자 계정의 패스워드를 에러로그에 기록한다.
[root@191 mysql]# mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
[root@191 mysql]# ls -al
합계 176584
-rw-r-----. 1 mysql dba 196608 2022-03-18 11:02 #ib_16384_0.dblwr
-rw-r-----. 1 mysql dba 8585216 2022-03-18 11:02 #ib_16384_1.dblwr
drwxr-x---. 2 mysql dba 4096 2022-03-18 11:02 #innodb_temp
drwxr-x--x. 6 mysql dba 4096 2022-03-18 11:02 .
drwxr-xr-x. 38 root root 4096 2022-03-18 10:59 ..
-rw-r-----. 1 mysql dba 56 2022-03-18 11:02 auto.cnf
-rw-------. 1 mysql dba 1676 2022-03-18 11:02 ca-key.pem
-rw-r--r--. 1 mysql dba 1112 2022-03-18 11:02 ca.pem
-rw-r--r--. 1 mysql dba 1112 2022-03-18 11:02 client-cert.pem
-rw-------. 1 mysql dba 1676 2022-03-18 11:02 client-key.pem
-rw-r-----. 1 mysql dba 5526 2022-03-18 11:02 ib_buffer_pool
-rw-r-----. 1 mysql dba 50331648 2022-03-18 11:02 ib_logfile0
-rw-r-----. 1 mysql dba 50331648 2022-03-18 11:02 ib_logfile1
-rw-r-----. 1 mysql dba 12582912 2022-03-18 11:02 ibdata1
drwxr-x---. 2 mysql dba 4096 2022-03-18 11:02 mysql
-rw-r-----. 1 mysql dba 25165824 2022-03-18 11:02 mysql.ibd
drwxr-x---. 2 mysql dba 4096 2022-03-18 11:02 performance_schema
-rw-------. 1 mysql dba 1676 2022-03-18 11:02 private_key.pem
-rw-r--r--. 1 mysql dba 452 2022-03-18 11:02 public_key.pem
-rw-r--r--. 1 mysql dba 1112 2022-03-18 11:02 server-cert.pem
-rw-------. 1 mysql dba 1680 2022-03-18 11:02 server-key.pem
drwxr-x---. 2 mysql dba 4096 2022-03-18 11:02 sys
-rw-r-----. 1 mysql dba 16777216 2022-03-18 11:02 undo_001
-rw-r-----. 1 mysql dba 16777216 2022-03-18 11:02 undo_002
에러로그를 통해 초기 패스워드 확인
[root@191 mysql]# cat /var/log/mysqld.log |grep password
2022-03-18T02:02:08.438693Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: FEOeXO)6C5oR
로그인 후 패스워드 수정을 우선적으로 진행한다.
자동 생성되는 패스워드로 로그인 시 명령어/SQL 사용이 제한된다.
초기 패스워드 입력
[root@191 mysql]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.28
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
패스워드 변경
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Study3306!';
Query OK, 0 rows affected (0.03 sec)
MySQL 서버는 트랜잭션은 커밋됐으나 데이터파일에 반영되지 않는 경우가 있다. 때문에 종료를 해야하는 상황에는 버퍼와 리두로그를 데이터파일에 동기화 시키는 과정이 필요 하다.
해당 과정을 클린 셧다운이라 표현하며, 서버가 기동할 때 트랜잭션 복구가 필요 없어 빠르게 기동된다.
mysql> show variables where variable_name like 'innodb_fast_shutdown';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| innodb_fast_shutdown | 1 |
+----------------------+-------+
1 row in set (0.00 sec)
mysql> SET GLOBAL innodb_fast_shutdown=0;
동적 변수 반영 후 재기동하면 해당옵션은 my.cnf 옵션/Default옵션으로 초기화된다.
급하게 변수를 변경하고 잊을 때가 있는데 이를 방지하는SET PERSIST
명령이 도입됐다.
# 참조
백은빈,이성욱. 2021. Real MySQL 8.0 (1권). 위키북스.
MySQL 8.0 Reference Manual