Search
Duplicate

MySQL 8.0.X 바이너리 설치

설치 목표

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
복사