1. System environment
[Email protected] ~]# uname-r
3.10.0-514.el7.x86_64
[Email protected] ~]# cat/etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[Email protected] ~]# Rpm-qa | grep mariadb
Mariadb-libs-5.5.52-1.el7.x86_64
[Email protected] ~]# rpm-e--nodeps mariadb-libs [[email protected] ~]# [[email protected] ~]# Yum install-y GC C Gcc-c++ Perl
2. Installing dependent Packages
The role of related dependency packages
CMake: Since the general Configure compilation method is deprecated from the MySQL5.5 version, the CMake compiler is required to set the compilation parameters for MySQL. such as: installation directory, data storage directory, character encoding, sorting rules, etc.
boost:#从 mysql 5.7.5 start boost library is required, MySQL source used in the C + + boost library, required to install boost1.59.0 or above version
gcc: Linux C language compiler tool, MySQL source code compiled by C and C + + written, requires the installation of GCC
Bison: Linux down-C + + syntax parser
ncurses: character Terminal processing Library
1) Installation File preparation
Download cmake-3.8.1.tar.gz Source Release Package
http://www.cmake.org/download/
wget https://cmake.org/files/v3.8/cmake-3.8.1.tar.gz
Download ncurses-6.0.tar.gz
ftp://ftp.gnu.org/gnu/ncurses/
wget ftp://ftp.gnu.org/gnu/ncurses/ncurses-6.0.tar.gz
Download m4-1.4.18.tar.gz
wget http://mirrors.kernel.org/gnu/m4/m4-1.4.18.tar.gz
Download bison-3.0.4.tar.gz
http://ftp.gnu.org/gnu/bison/
wget http://ftp.gnu.org/gnu/bison/bison-3.0.4.tar.gz
Download mysql-5.7.18.tar.gz
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18.tar.gz
Download Boost_1_59_0.tar.gz
wget https://ncu.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
2) installation of CMAKE and necessary software
Installing CMake
[Email protected] ~]# tar zxvf cmake-3.8.1.tar.gz [[email protected] ~]# CD cmake-3.8.1 [[email protected] cmake-3.8 .1]#./bootstrap [[email protected] cmake-3.8.1]# gmake && gmake Install [[email protected] cmake-3.8.1]# cm ake-version [[Email protected] cmake-3.8.1]# CD ~
Installing M4
[Email protected] ~]# tar zxvf m4-1.4.18.tar.gz [[email protected] ~]# CD m4-1.4.18 [[email protected] m4-1.4.18]#. /configure [[email protected] m4-1.4.18]# make && make install [[email protected] m4-1.4.18]# CD ~
Install Bison (Note: Perl and M4 support required)
[Email protected] ~]# tar zxvf bison-3.0.4.tar.gz [[email protected] ~]# CD bison-3.0.4 [[email protected] bison-3.0 .4]#./configure [[email protected] bison-3.0.4]# make && make install [[email protected] bison-3.0.4]# CD ~
Installing ncurses
[Email protected] ~]# tar zxvf ncurses-6.0.tar.gz [[email protected] ~]# CD ncurses-6.0 [[email protected] ncurses-6 .0]#./configure [[email protected] ncurses-6.0]# make && make install [[email protected] ncurses-6.0]# CD ~
Install Boost (note: The correct version of the boost required for MySQL 5.7.18 is boost_1_59_0)
[Email protected] ~]# tar zxvf boost_1_59_0.tar.gz [[email protected] ~]# MV Boost_1_59_0/usr/local/boost
3. Create a MySQL user, user group, and directory
[Email protected] ~]# groupadd-r mysql && useradd-r-G mysql-s/bin/false-m MySQL [[email protected] ~]# MK dir/usr/local/mysql [[email protected] ~]# mkdir-p/data/mysql
4. Pre-compilation
[[Email protected] ~]# tar zxvf mysql-5.7.18.tar.gz [[email protected] ~]# cd mysql-5.7.18 [[email protected] MYSQL-5.7.18] #cmake . -dcmake_install_prefix=/usr/local/mysql \ -dmysql_ datadir=/data/mysql \ -dwith_boost=/usr/local/boost \ -dsysconfdir=/etc \ -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=utf8mb4 \ -ddefault_collation= utf8mb4_general_ci \&Nbsp; -dwith_embedded_server=off
5. Compiling the installation
[Email protected] mysql-5.7.18]# make-j ' grep processor/proc/cpuinfo | Wc-l ' [[email protected] mysql-5.7.18]# make install
The-j parameter indicates that the number of threads at compile time is specified based on the number of CPU cores, which speeds up compilation. The default is 1 thread compilation.
6. Set permissions and initialize MySQL system authorization Form
[Email protected] mysql-5.7.18]# cd/usr/local/mysql [[email protected] mysql]# chown-r mysql:mysql. [Email protected] mysql]# mkdir temp [[email protected] mysql]# chmod 777./temp [[email protected] mysql]# Cd/dat a/mysql [[email protected] mysql]# chown-r mysql:mysql.
MySQL 5.7.6 Previous Version execute this script initialize the system database
./bin/mysql_install_db--user=mysql--basedir=/usr/local/mysql--datadir=/data/mysql
5.7.6 after version initial system database script
[Email protected] mysql]# cd/usr/local/mysql [[email protected] mysql]#./bin/mysqld--initialize-insecure--user=mys QL--basedir=/usr/local/mysql--datadir=/data/mysql
Attention:
Before MySQL version mysql_install_db was under Mysql_basedir/script, MySQL 5.7 was placed directly under the Mysql_basedir/bin directory.
"--initialize" is deprecated, generating a random password (~/.mysql_secret)
"--initialize-insecure" does not generate a password
Cannot have data file under "--datadir" directory
[Email protected] mysql]#./bin/mysql_ssl_rsa_setup
7. Create a configuration file
[email protected] mysql]# cat >/etc/my.cnf << EOF
[Client]
port=3306
Socket=/usr/local/mysql/mysql.sock
[Mysqld]
Character-set-server=utf8
Collation-server=utf8_general_ci
Skip-external-locking
Skip-name-resolve
User=mysql
port=3306
Basedir=/usr/local/mysql
Datadir=/data/mysql
Tmpdir=/usr/local/mysql/temp
# server_id = ...
Socket=/usr/local/mysql/mysql.sock
Log-error=/usr/local/mysql/logs/mysql_error.log
Pid-file=/usr/local/mysql/mysql.pid
open_files_limit=10240
back_log=600
max_connections=500
max_connect_errors=6000
wait_timeout=605800
#open_tables =600
#table_cache = 650
#opened_tables = 630
max_allowed_packet=32m
sort_buffer_size=4m
join_buffer_size=4m
thread_cache_size=300
Query_cache_type=1
query_cache_size=256m
Query_cache_limit=2m
query_cache_min_res_unit=16k
tmp_table_size=256m
max_heap_table_size=256m
key_buffer_size=256m
read_buffer_size=1m
read_rnd_buffer_size=16m
bulk_insert_buffer_size=64m
Lower_case_table_names=1
Default-storage-engine=innodb
innodb_buffer_pool_size=2g
innodb_log_buffer_size=32m
innodb_log_file_size=128m
Innodb_flush_method=o_direct
#####################
Thread_concurrency=32
long_query_time=2
Slow-query-log=on
Slow-query-log-file=/usr/local/mysql/logs/mysql-slow.log
[Mysqldump]
Quick
max_allowed_packet=32m
[Mysqld_safe]
Log-error=/var/log/mysqld.log
Pid-file=/var/run/mysqld/mysqld.pid
Eof
8. Configure the MySQL service
[Email protected] mysql]# cp/usr/local/mysql/support-files/mysql.server/etc/init.d/mysqld [[email protected] MySQL] # chkconfig--add mysqld [[email protected] mysql]# chkconfig mysqld on
9. Start the service
[Email protected] mysql]# service mysqld start [[email protected] mysql]# NETSTAT-ANPT | grep mysqld
10. Configure the MySQL environment variable
[[email protected] mysql]# echo-e ' \n\nexport path=/usr/local/mysql/bin: $PATH \ n ' >>/etc/profile && Source/etc/profile
11. Set the database root user password
[Email protected] mysql]#./bin/mysql_secure_installation
12. Create additional MySQL database users
[[email protected] mysql]# mysql-uroot-p mysql> CREATE DATABASE ' testdb ' DEFAULT CHARACTER SET UTF8 COLLATE utf8_ge Neral_ci; Mysql> grant all privileges on testdb.* to ' Ryanxu ' @ ' percent ' identified by ' [email protected]# '; mysql> flush Privileges; Myqsl> exit
Error Rollup:
1. If the halfway compilation fails, you need to delete the cache file of the precompiled configuration parameter generated by the CMake and make the generated file after compilation and recompile.
[[email protected] mysql-5.7.18]# make clean [[email protected] mysql-5.7.18]# rm-f CMakeCache.txt
2. If an error
MAKE[2]: * * [libmysqld/examples/mysql_client_test_embedded] Error 1
MAKE[1]: * * [Libmysqld/examples/cmakefiles/mysql_client_test_embedded.dir/all] Error 2
Plus
-dwith_embedded_server=off
This article is from the SQL Server deep Dive blog, so be sure to keep this source http://ultrasql.blog.51cto.com/9591438/1924467
Source code compilation on CentOS 7 install MySQL 5.7