注:Mysql 5.7以后需要boost库,因此5.7之后的版本 源码包有两种,一种是带boost库的例如 mysql5.7.1-boost,另外一种是不带boost库的。两者区别的就是不带boost库的源码包需要自己去单独安装boost库

下载软件到usr/local目录下:

cd /usr/local 
wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz 
wget http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.11.tar.gz 
wget http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.11.tar.gz 

安装boost

注:此处如果只为安装mysql其实可以不用安装的,解压就好,到时安装mysql时引用目录,不过percona-xtrabackup需要用到,所以我安装了。

tar xzf boost_1_59_0.tar.gz 
cd boost_1_59_0 
./bootstrap.sh 
./b2 install 

不带boost的mysql源码安装

1、安装依赖包

yum -y install gcc gcc-c++ ncurses ncurses-devel cmake 

2、添加禁止登陆的mysql用户groupadd mysql

useradd -r -g mysql -s /bin/false mysql 

3、编译安装从MySQL 5.7.5开始Boost库是必需的

mkdir -p /data/mysql 
tar xzf mysql-5.7.11.tar.gz 
cd mysql-5.7.11 
cmake . \ 
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ 
-DMYSQL_DATADIR=/data/mysql \ 
-DDOWNLOAD_BOOST=1 \ 
-DWITH_BOOST=/usr/local/boost_1_59_0 \ 
-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 \ 
-DWITH_EMBEDDED_SERVER=1 
make 
make install 

4、配置开机启动项cp /usr/local/mysql/support-files/mysql.server /etc/init.d/

mysqld 
chmod +x /etc/init.d/mysqld 
chkconfig --add mysqld 
chkconfig mysqld on 

5、配置/etc/my.cnf 仅供参考,可以不配,用默认的。

cat > /etc/my.cnf << EOF
[client] 
port = 3306 
socket = /tmp/mysql.sock 
default-character-set = utf8mb4 
[mysqld] 
port = 3306 
socket = /tmp/mysql.sock 
basedir = /usr/local/mysql 
datadir = /data/mysql 
pid-file = /data/mysql/mysql.pid 
user = mysql 
bind-address = 0.0.0.0 
server-id = 1 
init-connect = 'SET NAMES utf8mb4' 
character-set-server = utf8mb4 
#skip-name-resolve 
#skip-networking 
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 = mysql-bin 
binlog_format = mixed 
expire_logs_days = 30 
log_error = /data/mysql/mysql-error.log 
slow_query_log = 1 
long_query_time = 1 
slow_query_log_file = /data/mysql/mysql-slow.log 
performance_schema = 0 
explicit_defaults_for_timestamp 
#lower_case_table_names = 1 
skip-external-locking 
default_storage_engine = InnoDB 
#default-storage-engine = MyISAM 
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 
EOF 

6、初始化数据

/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql 
注: 之前版本mysql_install_db是在mysql_basedir/script下,5.7放在了mysql_install_db/bin目录下,且已被废弃“–initialize”会生成一个随机密码(~/.mysql_secret),而”–initialize-insecure”不会生成密码–datadir目标目录下不能有数据文件 

7、启动数据库

service mysqld start 

带boost的mysql源码安装

1、安装依赖包

yum -y install make gcc-c++ cmake bison-devel  ncurses-devel   bison perl perl-devel  perl perl-devel 

2、解压到/usr/local目录下

tar -zxvf mysql-boost-5.7.11.tar.gz -C /usr/local 

3、创建mysql组和用户

groupadd mysql 
useradd -r -g mysql -s /bin/false mysql 

4、编译mysql

cd /usr/local/mysql-5.7.11/ 
cmake -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost 
make 
make install 

5、把原来的/etc/my.cnf备份

cp /etc/my.cnf /etc/my.cnf.bak 
rm -f /etc/my.cnf 

6、把安装目录用户和组更改为mysql

cd /usr/local/mysql 
chown -R mysql . 
chgrp -R mysql . 

7、创建一个数据目录

mkdir -p /data/mysql/data/ 

8、初始化mysql,及开启ssl新功能

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

9、 设为root是为了防止普通用户不小心删除数据库

chown -R root . 
chown -R mysql /data 

10、拷贝配置文件

cp support-files//my-default.cnf /etc/my.cnf 
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql 

11、修改环境变量

vi /etc/profile 

#在profile文件末尾增加两行 
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH 
export PATH 

# 使PATH搜索路径立即生效: 
source /etc/profile 

12、修改配置文件

vi /etc/my.cnf 
#修改第19行(取消注释且修改为)   datadir = /data/mysql/data/ 

13、启动

service mysql start 

遇到的问题:

g++: internal compiler error: Killed (program cc1plus)

Please submit a full bug report,

这个原因是内存不足, 在linux下增加临时swap空间
step 1:
  #sudo dd if=/dev/zero of=/home/swap bs=64M count=16
  注释:of=/home/swap,放置swap的空间; count的大小就是增加的swap空间的大小,64M就是块大小,这里是64MB,所以总共空间就是bs*count=1024MB.这里分配空间的时候需要一点时间,等待执行完毕。
step 2:
  # sudo mkswap /home/swap (可能会提示warning: don't erase bootbits sectorson whole disk. Use -f to force,不用理会)
  注释:把刚才空间格式化成swap各式
step 3:
  #sudo swapon /home/swap
  注释:使刚才创建的swap空间
step 4:执行你相关的操作,如make

关闭:
step 1:sudo swapoff /home/swap
step 2:sudo rm /home/swap