How to install MySQL 5.7 from source code in CentOS 7 environment

How to install MySQL 5.7 from source code in CentOS 7 environment

This article describes how to install MySQL 5.7 from source code in the CentOS 7 environment. Share with you for your reference, the details are as follows:

Install dependency packages

Copy the code as follows:
yum -y install autoconf automake libtool cmake ncurses-devel openssl-devel lzo-devel zlib-devel gcc gcc-c++

Download the corresponding source package

wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.12.tar.gz

Add mysql user

useradd -M -s /sbin/nologin mysql

Unzip the source package

tar zxvf boost_1_59_0.tar.gz -C /home/mysql # Unzip the file to the /home/mysql directory tar zxvf mysql-5.7.12.tar.gz

Compile mysql

cmake . -DCMAKE_INSTALL_PREFIX=/home/mysql/mysql_client/mysql-5.7-01 \
-DMYSQL_DATADIR=/home/mysql/mysql_data/mysql-5.7-01 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/home/mysql/boost_1_59_0 \ #Specify the location of boost -DSYSCONFDIR=/etc/mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_EMBEDDED_SERVER=1 \
-DMYSQL_TCP_PORT=3306;

Compile and install

make -j `grep processor /proc/cpuinfo | wc -l` #Compiling will consume a lot of memory, small memory may not be able to complete the compilation make install #Start installation

Configuration startup

Copy the code as follows:
cp /home/mysql/mysql_client/mysql-5.7-01/support-files/mysql.server /etc/init.d/mysqld

Add executable permissions

chmod +x /etc/init.d/mysqld #mysqld can modify the mysql configuration file path

Configure mysql configuration /etc/my.cnf, for reference only

[client]
port = 3306
socket = /home/mysql/mysql_data/mysql-5.7-01/mysql.sock
default-character-set = utf8
[mysqld]
port = 3306
socket = /home/mysql/mysql_data/mysql-5.7-01/mysql.sock
basedir = /home/mysql/mysql_client/mysql-5.7-01
datadir = /home/mysql/mysql_data/mysql-5.7-01
pid-file = /home/mysql/mysql_data/mysql-5.7-01/mysql/mysql.pid
user = mysql
bind-address = 0.0.0.0
server-id = 1
init-connect = 'SET NAMES utf8'
character-set-server = utf8
back_log = 300
max_connections = 1000
max_connect_errors = 6000
open_files_limit = 65535
table_open_cache = 128
max_allowed_packet = 4M
binlog_cache_size = 1M
max_heap_table_size = 8M
tmp_table_size = 16M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 8M
key_buffer_size = 4M
thread_cache_size = 8
query_cache_type = 1
query_cache_size = 8M
query_cache_limit = 2M
ft_min_word_len = 4
log_bin = /home/mysql/mysql_logs/mysql-5.7-01/mysql-bin
binlog_format = mixed
expire_logs_days = 30
log_error = /home/mysql/mysql_logs/mysql-5.7-01/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /home/mysql/mysql_logs/mysql-5.7-01/mysql-slow.log
performance_schema = 0
explicit_defaults_for_timestamp
skip-external-locking
default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 64M
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
interactive_timeout = 28800
wait_timeout = 28800
[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M

Remember to assign the mysql related folders to the mysql user we created earlier

chown -R mysql.mysql mysql/

Initialize the database

/home/mysql/mysql_client/mysql-5.7-01/bin/mysqld --initialize-insecure --user=mysql --basedir=/home/mysql/mysql_client/mysql-5.7-01 --datadir=/home/mysql/mysql_data/mysql-5.7-01 #--initialize-insecure does not generate a random password

Start the database

/etc/init.d/mysqld start

Enter the database

/home/mysql/mysql_client/mysql-5.7-01/bin/mysql -uroot -p

I hope this article will help you configure your CentOS server.

You may also be interested in:
  • Installation tutorial of mysql8.0rpm on centos7
  • Tutorial on installing lnmp using yum on centos7 (linux+nginx+php7.1+mysql5.7)
  • A concise tutorial on how to install mysql5.7 decompressed version on CentOS7
  • Centos7 installation and configuration of Mysql5.7
  • Detailed tutorial on installing MySQL 5.7.20 on RedHat 6.5/CentOS 6.5
  • Detailed steps to install Mysql5.7.19 using yum on Centos7
  • Tutorial on installing MYSQL8.X on Centos

<<:  JS calculates the probability of winning based on the prize weight

>>:  How to notify users of crontab execution results by email

Recommend

Steps to deploy multiple tomcat services using DockerFile on Docker container

1. [admin@JD ~]$ cd opt #Enter opt in the root di...

Learn the common methods and techniques in JS arrays and become a master

Table of contents splice() Method join() Method r...

HTML tag full name and function introduction

Alphabetical DTD: Indicates in which XHTML 1.0 DT...

Detailed examples of float usage in HTML/CSS

1. Basic usage examples of float 1. Let's fir...

Detailed explanation of Nginx's control over access volume

Purpose Understand the Nginx ngx_http_limit_conn_...

Prometheus monitors MySQL using grafana display

Table of contents Prometheus monitors MySQL throu...

Steps to repair grub.cfg file corruption in Linux system

Table of contents 1. Introduction to grub.cfg fil...

How to use a game controller in CocosCreator

Table of contents 1. Scene layout 2. Add a handle...

Summary of Operator Operations That Are Very Error-Prone in JavaScript

Table of contents Arithmetic operators Abnormal s...

Pure CSS to achieve input box placeholder animation and input verification

For more exciting content, please visit https://g...

Three ways to avoid duplicate insertion of data in MySql

Preface In the case of primary key conflict or un...

MySQL installation and configuration tutorial for Mac

This article shares the MySQL installation tutori...