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

js to realize the rotation of web page pictures

This article shares the specific code of js to re...

Vue project implements graphic verification code

This article example shares the specific code of ...

Implementation of Nginx load balancing/SSL configuration

What is load balancing? When a domain name points...

Summary of 16 XHTML1.0 and HTML Compatibility Guidelines

1. Avoid declaring the page as XML type . The pag...

HTML table markup tutorial (48): CSS modified table

<br />Now let's take a look at how to cl...

Detailed explanation of Linux server status and performance related commands

Server Status Analysis View Linux server CPU deta...

CentOS IP connection network implementation process diagram

1. Log in to the system and enter the directory: ...

Implementation of MySQL scheduled database backup (full database backup)

Table of contents 1. MySQL data backup 1.1, mysql...

How to modify the default submission method of the form

The default submission method of html is get inste...

Introduction to the functions and usage of value and name attributes in Html

1. The value used in the button refers to the text...

JavaScript prototype and prototype chain details

Table of contents 1. prototype (explicit prototyp...

Detailed installation and configuration of Subversion (SVN) under Ubuntu

If you are a software developer, you must be fami...