설치 목표
•
MySQL 8.0.35 Community Server
•
InnoDB 방식
•
MySQL Server
◦
포트 : 3306
◦
mysql 기본 설치 경로 : /home/mysql-mail
◦
mysql 데이터 설치 경로 : /data/mysql-mail-data
1. MySQL 8 바이너리 설치
•
MySQL은 wget으로 다운이 안되더라구요. 아래 파일을 받은 후, DB VM에 업로드 해주세요.
Compressed TAR Archive 8.0.35 588.9M
Download
(mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz)
Bash
복사
•
Ubuntu에서 MySQL 설치 후 접속을하려면 libncurses5 패키지가 필요합니다.
[패키지 업데이트]
apt -y update && apt -y upgrade
[libncurses5 패키지 설치]
apt-get -y install libncurses5 libaio1
# MySQL 접속에 필요한 리눅스 패키지 설치
Bash
복사
•
MySQL 바이너리를 압축 해제합니다.
•
압축 해제된 디렉토리를 mysql-mail 로 이름을 바꿉니다.
•
용량 절약을 위하여 압축 파일은 삭제합니다.
pwd
/home
tar -xf mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.35-linux-glibc2.12-x86_64 mysql-mail
rm mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz
Bash
복사
•
mysql 그룹 및 mysql 사용자 생성
groupadd mysql
useradd mysql -g mysql
Bash
복사
•
MySQL 데이터 저장 디렉토리인 /data/mysql-mail-data 디렉토리 생성
mkdir -p /data/mysql-mail-data
Bash
복사
•
/home/mysql-mail, /data/mysql-mail-data 디렉토리 mysql 권한 부여
chown -R mysql:mysql /home/mysql-mail
chown -R mysql:mysql /data/mysql-mail-data
Bash
복사
•
my.cnf 추가 및 mysql.server 스크립트 세팅
•
/home/mysql-mail/my.cnf
◦
설치 환경 및 리플리케이션 구성 등 상황에 따라 필요한 설정을 변경하시면 됩니다.
[mysql]
no-auto-rehash
innodb-read-only = 0
[mysqld]
port = 3306
user=mysql
datadir=/data/mysql-mail-data
socket=/data/mysql-mail-data/mysql.sock
sql_mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_ENGINE_SUBSTITUTION"
# log-error=/data/mysql-mail-data/logs/mysqld-error.log
# pid-file=/data/mysql-mail-data/mysqld.pid
default-storage-engine = InnoDB
replica-skip-errors=1062,1032,1452,1677,1726,1064,1146
mysqlx=OFF
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
bind-address=0.0.0.0
mysqlx-bind-address=0.0.0.0
init-connect='SET NAMES utf8mb4'
skip-external-locking
# 최대 컨넥션 수
max_connections = 200
# SHA256 플러그인으로 password()함수에 적용하여 계정의 암호를 생성하도록 지정
default_authentication_plugin=caching_sha2_password
max_allowed_packet = 64M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
# 기본 로그 활성화
general_log = ON
#log_output = FILE
# 바이너리 로그 사용시 활성화 (기본값 OFF)
log-bin=mysql-bin
# 시스템 로그 활성화
#log_syslog_include_pid = ON
#log_syslog_tag = mysys
# 슬로우 쿼리(SLOW QUERY)
# slow_query_log = ON
# slow_query_log_file = /data/mysql-mail-data/logs/mysql-slow.log
# long_query_time = 5
# 로그 시간정보를 시스템기준으로 설정
log_timestamps = SYSTEM
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
# server-id=1
# lc_messages_dir=/data/mysql-mail-data
# relay-log=relay-bin
# InnoDB 설정
innodb_file_per_table=ON
innodb_data_home_dir = /data/mysql-mail-data
# innodb_data_file_path= block1:2G;block2:2G;block3:2G;block4:2G;block5:2G:autoextend
# innodb_data_file_path= block1:1G;block2:1G;block3:1G:autoextend
innodb_data_file_path= block1:1G:autoextend
innodb_log_group_home_dir = /data/mysql-mail-data
innodb_buffer_pool_size = 16M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
Bash
복사
•
/home/mysql-mail/mysql.server
[AS-IS]
basedir=
datadir=
[TO-BE]
basedir=/home/mysql-mail
datadir=/data/mysql-mail-data
Bash
복사
•
data 심볼릭 링크 생성
◦
/home/mysql-mail/data → /data/mysql-mail-data
ln -s /data/mysql-mail-data/ data
Bash
복사
•
/home/mysql-mail 디렉토리 다시 한번 mysql 권한 부여
chown -R mysql:mysql /home/mysql-mail
Bash
복사
•
MySQL Database 초기화
pwd
/home/mysql-mail
./bin/mysqld --defaults-file=/home/mysql-mail/my.cnf --initialize-insecure --user=mysql
Bash
복사
•
MySQL 서버 시작 및 접속 테스트
pwd
/home/mysql-mail
./mysql.server start
./bin/mysql -Sdata/mysql.sock -uroot
Bash
복사
2. MySQL root 계정 비밀번호 설정 및 사용자 추가
•
root 계정 비밀번호 변경 및 사용자 계정 추가
[root 계정 비밀번호 설정]
ALTER user 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '1234';
[어플리케이션에서 사용할 계정 설정]
create user 'admin'@'%' identified by '1234' ;
grant all privileges on *.* to 'admin'@'%' with grant option;
flush privileges;
Bash
복사
•
Aplication 설치용 Database 생성
create database NEW_DB default character set utf8mb4 collate utf8mb4_general_ci;
Bash
복사
•
root 계정 비밀번호 설정 적용 테스트
pwd
/home/mysql-mail
[비밀번호 미 입력시 오류]
./bin/mysql -Sdata/mysql.sock -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[비밀번호 미 입력시 접속 성공]
./bin/mysql -Sdata/mysql.sock -uroot -p1234
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
[dbcon.sh 스크립트 생성]
echo './bin/mysql -Sdata/mysql.sock -uroot -p1234' > dbcon.sh
[dbcon.sh 스크립트 실행권한 부여]
chmod u+x dbcon.sh
[dbcon.sh 스크립트를 통한 접속 성공]
./dbcon.sh
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.35 MySQL Community Server - GPL
Bash
복사
•
mysql.server 스크립트를 통한 중지, 기동 동작 여부 확인
[중지 전 프로세스 확인]
ps -ef | grep mysql
[중지]
./mysql.server stop
[중지 후 프로세스 확인]
ps -ef | grep mysql
[기동]
./mysql.server start
[기동 후 프로세스 확인]
ps -ef | grep mysql
Bash
복사