Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

이열매의 메모장

CentOS 7에 MySQL 5.7 소스 설치하기 본문

서버

CentOS 7에 MySQL 5.7 소스 설치하기

이열매 2019. 11. 4. 16:40

MySQL 소스 컴파일 설치에는 어마무시한 시간이 걸리기 때문에 일반적으로 패키지 설치로 진행한다. 그러나 간혹 설치 경로를 지정하거나 권한 문제로 소스 설치가 필요한 경우가 있다. MySQL 소스 설치에 대해서 예전 버전으로 다룬 글이 많은데, 그때는 맞고 지금은 틀리므로 19년 11월 기준 MySQL 5.7 최신 버전을 설치해보자.

 

 

환경 간략 개요


  • OS : CentOS 7.4
  • MySQL : 5.7.27

 

 

MySQL 컴파일 설치


1. 의존성 라이브러리 설치

$ sudo yum install cmake ncurses ncurses-devel

 

2. 압축 파일 다운로드 및 해제

$ wget https://downloads.mysql.com/archives/get/file/mysql-5.7.27.tar.gz
$ tar xvfz mysql-5.7.27.tar.gz

 

3. Makefile 작성 및 설치

$ cd mysql-5.7.27/
$ cmake \
   -DCMAKE_INSTALL_PREFIX=/{설치할 경로}/mysql \
   -DSYSCONFDIR=/PREFIX/mysql/etc \
   -DMYSQL_DATADIR=/PREFIX/mysql/data \
   -DMYSQL_UNIX_ADDR=/PREFIX/mysql/tmp/mysql.sock \
   -DENABLED_LOCAL_INFILE=1 \
   -DDEFAULT_CHARSET=utf8 \
   -DDEFAULT_COLLATION=utf8_general_ci \
   -DDOWNLOAD_BOOST=1 \
   -DWITH_BOOST=$HOME/my_boost
$ make && make install

* MySQL 5.7 버전 빌드를 위해선 Boost C++ 라이브러리가 필요하다. 별도로 boost를 다운받지 않고, 옵션으로 기입하여 자동으로 설치하자.

* 여기서 필수 옵션은 MySQL이 설치될 PREFIX 경로 설정과 Boost 옵션이다. 이외의 옵션은 mysql 설치 후 my.cnf에 작성할 수 있다.

* make && make install 이후에는 수많은 시간이 소요된다. 가급적이면 &&를 사용하여 make와 make install을 한꺼번에 수행하는 것을 추천한다.

 

4. my.cnf 파일 작성

# WORKDIR = /{PREFIX}/mysql/

$ mkdir tmp etc
$ touch etc/my.cnf

-----------------------my.cnf-----------------------
[client]
user=mysql
port = 3306
socket = /{PREFIX}/mysql/tmp/mysql.sock

[mysqld]
user=mysql
port = 3306
basedir=/{PREFIX}/mysql
datadir=/{PREFIX}/mysql/data

socket = /{PREFIX}/mysql/tmp/mysql.sock
log-error=/{PREFIX}/mysql/data/mysqld.log
pid-file=/{PREFIX}/mysql/tmp/mysqld.pid

key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
 
thread_cache_size = 8
query_cache_size = 32M

skip-external-locking
skip-name-resolve
symbolic-links=0

max_connections = 1000
max_connect_errors = 1000
wait_timeout= 60

explicit_defaults_for_timestamp

character-set-client-handshake=FALSE
init_connect = SET collation_connection = utf8_general_ci
init_connect = SET NAMES utf8
character-set-server = utf8
collation-server = utf8_general_ci

default-storage-engine = InnoDB
innodb_buffer_pool_size = 503MB
innodb_data_file_path = ibdata1:10M:autoextend
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 8M
innodb_log_file_size = 128M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
-------------------------------------------------------

* my.cnf 파일은 후에 MySQL 설치 후 실행(데이터베이스 생성) 시 사용되는 환경설정 파일이다.

* cmake에서 경로를 지정했을 경우엔 자동으로 my.cnf 파일이 생성되지 않는다. 이 때, 수동으로 만들어줘야 하는 것이 tmp와 etc 디렉토리이며, etc 디렉토리 내부에 my.cnf 파일을 생성해야 한다. 해당 환경 설정 파일은 5.7에서 기본으로 제공되는 환경설정 중 어떤 것이든 커스텀해서 사용하면 된다.

* charset 같은 경우, makefile 작성 시 이미 설정해 놓았기에 생략이 가능하다.

* buffer pool size는 일반적으로 현장비의 메모리 50 ~ 70%로 세팅한다.

* 여기서는 기본 사용 엔진을 InnoDB로 설정하였다. MyISAM과 InnoDB의 차이점을 확인하려면 다음 포스팅을 살펴보자.

 

5. MySQL 설치 후 작업

 

  • data 디렉토리 생성
$ bin/mysqld --initialize

 

  • MySQL 서버 시작
$ support-files/mysql.server start
$ bin/mysql

 

6. 이후 작업(선택)

 

  • MySQL root 비밀번호 변경

1. MySQL 접속

 

 root 계정과 비밀번호는 data 디렉토리 생성 시 자동 생성된다. root 계정의 임시 비밀번호를 그대로 사용하는 방법도 있으나, 자신이 원하는 비밀번호로 변경할 경우 MySQL에 접속해야 한다. 이 때, 초기의 MySQL에 접속하기 위한 방법은 두 가지가 있다. root 계정의 초기 비밀번호를 입력하고 접속하거나 계정 확인 절차없이 접속하는 것이다.

 

 자동 생성된 root 계정의 임시 비밀번호는 로그 파일에 저장된다. mysql을 커스텀 경로로 설정했을 경우, data 디렉토리 내부에 존재하는 mysqld.log 를 살펴보면 된다. 해당 비밀번호를 이용하여 로그인 후, root 계정의 비밀번호를 원하는 번호로 변경한다.

 계정 확인없이 접속하기 위해서는 데몬 실행 시 옵션을 걸거나 환경설정 파일에 해당 옵션을 추가해주면 된다. 즉, 인증 절차 생략 옵션인 skip-grant-tables을 my.cnf에 적는다. 혹은, 데몬 실행 시 인증 절차를 생략하기 위해서는 다음과 같이 데몬을 실행한다.

/usr/bin/mysqld_safe --skip-grant &
/usr/bin/mysqld_safe --skip-grant-tables &

 

 

2. 비밀번호 변경

 

mysql> UPDATE mysql.user SET authentication_string=PASSWORD('{비밀번호}') WHERE user='root' AND Host='localhost';
mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '{비밀번호}';
mysql> exit

 

3. MySQL 재시작

$ support-files/mysql.server restart

 

 

  • 톰캣과 MySQL 연동
$ wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.18.tar.gz
$ tar xvfz mysql-connector-java-8.0.18.tar.gz
$ cp mysql-connector-java-8.0.18/mysql-connector-java-8.0.18.jar /[PREFIX]/tomcat/lib/

 

 

 

 

 

 


참고링크

 

 

 

'서버' 카테고리의 다른 글

Elasticsearch 정리  (0) 2020.01.05
Ansible 정리  (0) 2020.01.05
mod_ssl 사용하여 아파치에 SSL 설정하기  (0) 2019.10.29
OpenSSL로 Nginx에 Https 구현하기  (0) 2019.10.22
centOS7에서 아파치와 톰캣 설치  (0) 2019.10.18
Comments