MySQL 5.7 소스 설치하기

리눅스/MySQL|2019. 5. 13. 09:39
반응형

필수 구성 요소

# yum -y install wget gcc* ncurses-devel

 

 

1. cmake 설치

# cd /usr/local/src

# wget http://github.com/Kitware/CMake/releases/download/v3.18.4/cmake-3.18.4.tar.gz

# tar xvzf cmake-3.18.4.tar.gz

# cd cmake-3.18.4

# ./bootstrap

# make

# make install

 

MySQL 5.7.x 설치시 boost 라이브러리를 참조하기 때문에 이부분을 컴파일 과정에서 추가해줘야 됩니다.

 

# cd ..

# wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

# tar xvfz boost_1_59_0.tar.gz

# mv boost_1_59_0 /usr/local/

 

MySQL ./configure 설행시 아래 옵션 잊지말고 추가합니다.

-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost_1_59_0

 

 

2. 계정 생성

# groupadd -g 400 mysql
# useradd -u400 -g400 -d /usr/local/mysql -s /bin/false mysql

 

 

3. MySQL 설치

# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26.tar.gz

# tar xvzf mysql-5.7.26.tar.gz

# cd mysql-5.7.26

# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DSYSCONFDIR=/etc -DMYSQL_TCP_PORT=3306 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost_1_59_0

# make

# make install

 

[참고]

euckr 로 설치를 원할 경우 옵션을 변경해줍니다.

-DDEFAULT_CHARSET=euckr -DDEFAULT_COLLATION=euckr_korean_ci

 

 

4. DB생성 및 기본 보안 설정

 

실행 파일을 생성하고 부팅시 자동 구동 되도록 합니다.

# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# chmod 700 /etc/init.d/mysqld
# chown root.root /etc/init.d/mysqld
# chkconfig --add mysqld

 

기본 DB 를 생성하기 전에 환경 설정 파일을 먼저 만들어 줍니다.

# vi /etc/my.cnf

[client]
default-character-set = utf8

[mysqld]
server-id = 1
skip-name-resolve
max_connections = 10240
thread_cache_size = 50
wait_timeout = 28800
sort_buffer_size = 512K
collation-server = utf8_general_ci
character-set-server = utf8
skip-character-set-client-handshake
default-storage-engine = InnoDB
innodb_file_per_table = 1
innodb_data_home_dir = /usr/local/mysql/data
innodb_data_file_path = ibdata1:1024M:autoextend
innodb_autoextend_increment = 100
innodb_log_group_home_dir = /usr/local/mysql/data
innodb_buffer_pool_size = 5G
innodb_log_buffer_size = 16M
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 1
innodb_thread_concurrency = 0
innodb_lock_wait_timeout = 20
innodb_force_recovery = 0
innodb_flush_method = O_DSYNC
innodb_doublewrite = 0
innodb_sync_spin_loops = 20
innodb_table_locks = 1
innodb_thread_sleep_delay = 1000
innodb_max_purge_lag = 0
innodb_commit_concurrency = 0
innodb_concurrency_tickets = 500

log-bin = binlog
max_binlog_size = 1G

general_log = 1
general_log_file = /usr/local/mysql/data/general_query.log

slow-query-log = 1
long_query_time = 10
slow_query_log_file = /usr/local/mysql/data/slow_query.log

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8

 

이제 기본 DB 를 생성합니다.

MySQL 5.7 의 경우 아래와 같이 초기화할 경우 root 패스워드 없이 생성됩니다.

# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

 

초기화시 패스워드가 랜덤으로 생성되게 하려면 위 파란색 옵션을 아래 옵션으로 대체하면 됩니다.

(설치 화면 마지막줄에 출력)

--initialize

 

mysql 을 가동하고 root 패스워드를 새로 설정합니다.

MySQL 5.7 버전부터 mysql.user 테이블의 password 필드는 사라졌고, 변경 방법이 아래와 같이 바뀌었습니다.

 

# /etc/init.d/mysqld start

# /usr/local/mysql/bin/mysql -p

Enter password: (설치시 패스워드)

 

mysql> alter user root@localhost identified with mysql_native_password by '새패스워드';

mysql> flush privileges; 

 

반응형

댓글()