安装依赖包

yum-yinstallgccgcc-c++ncursesncurses-develcmake

下载相应源码包

cd/root/oneinstack/src

wgethttp://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

wgethttp://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.11.tar.gz

添加mysql用户

useradd-M-s/sbin/nologinmysql

预编译

tarxzfboost_1_59_0.tar.gz

tarxzfmysql-5.7.11.tar.gz

mkdir-p/data/mysql

cdmysql-5.7.11

cmake.-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\

-DMYSQL_DATADIR=/data/mysql\

-DDOWNLOAD_BOOST=1\#从MySQL5.7.5开始Boost库是必需的

-DWITH_BOOST=../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


cmake . -DCMAKE_INSTALL_PREFIX=/srv/mysql5713 \

-DMYSQL_DATADIR=/srv/mysql5713/data \

-DMYSQL_UNIX_ADDR=/srv/mysql5713/tmp/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \

-DENABLED_LOCAL_INFILE=ON \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_FEDERATER_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_EXAMPLE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITH_FAST_MUTEXES=1 \

-DWITH_ZLIB=bundled \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_READLINE=1 \

-DWITH_EMBEDDED_SERVER=1 \

-DWITH_DEBUG=0 \

-DWITH_BOOST=/srv/mysql/boost_1_59_0



编译安装

make

make install

启动脚本,设置开机自启动

/bin/cp/usr/local/mysql/support-files/mysql.server/etc/init.d/mysqld

chmod+x/etc/init.d/mysqld

chkconfig--addmysqld

chkconfigmysqldon


/etc/my.cnf,仅供参考

vim /etc/my.cnf

[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='SETNAMESutf8mb4'

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

初始化数据库

之前版本mysql_install_db是在mysql_basedir/script下,5.7放在了mysql_install_db/bin目录下,且已被废弃

"--initialize"会生成一个随机密码(~/.mysql_secret),而"--initialize-insecure"不会生成密码

--datadir目标目录下不能有数据文件


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



启动数据库

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

service mysql start

chkconfig mysql on




设置数据库密码

dbrootpwd=oneinstack#数据库root密码

/usr/local/mysql/bin/mysql-e"grantallprivilegeson*.*toroot@'127.0.0.1'identifiedby\"$dbrootpwd\"withgrantoption;"

/usr/local/mysql/bin/mysql-e"grantallprivilegeson*.*toroot@'localhost'identifiedby\"$dbrootpwd\"withgrantoption;"

新版的mysql数据库下的user表中已经没有Password字段了,而是将加密后的用户密码存储于authentication_string字段





安装1> 添加mysql用户

shell>cd/opt/mysql-servershell>groupaddmysql#添加mysql用户组shell>useradd-r-gmysql-s/bin/falsemysql#添加mysql用户2> 配置mysql预编译参数

shell>cmake.-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\-DMYSQL_DATADIR=/usr/local/mysql/data\-DWITH_BOOST=/usr/local/boost_1_59_0\-DSYSCONFDIR=/etc\-DEFAULT_CHARSET=utf8mb4\-DDEFAULT_COLLATION=utf8mb4_general_ci\-DENABLED_LOCAL_INFILE=1\-DEXTRA_CHARSETS=all

-DCMAKE_INSTALL_PREFIX:安装路径

-DMYSQL_DATADIR:数据存放目录

-DWITH_BOOST:boost源码路径

-DSYSCONFDIR:my.cnf配置文件目录

-DEFAULT_CHARSET:数据库默认字符编码

-DDEFAULT_COLLATION:默认排序规则

-DENABLED_LOCAL_INFILE:允许从本文件导入数据

-DEXTRA_CHARSETS:安装所有字符集


更多预编译配置参数请参考mysql官方文档说明:http://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html#cmake-general-options

3> 编译并安装

shell>make-j`grepprocessor/proc/cpuinfo|wc-l`shell>makeinstall

-j参数表示根据CPU核数指定编译时的线程数,可以加快编译速度。默认为1个线程编译,经测试单核CPU,1G的内存,编译完需要将近1个小时。

4> 初始化系统数据库

shell>cd/usr/local/mysqlshell>chown-Rmysql:mysql.#注意:MySQL5.7.6之前的版本执行这个脚本初始化系统数据库shell>./bin/mysql_install_db--user=mysql--basedir=/usr/local/mysql--datadir=/usr/local/mysql/data#5.7.6之后版本初始系统数据库脚本(本文使用此方式初始化)shell>./bin/mysqld--initialize-insecure--user=mysql--basedir=/usr/local/mysql--datadir=/usr/local/mysql/datashell>./bin/mysql_ssl_rsa_setupshell>chown-Rroot.shell>chown-Rmysqldata


5、设置配置文件

shell>cpsupport-files/my-default.cnf/etc/my.cnf6、配置mysql服务

shell>cpsupport-files/mysql.server/etc/init.d/mysqldshell>chkconfig--addmysqld#添加到系统服务shell>chkconfigmysqldon#开机启动7、启动服务

shell>servicemysqldstart#启动mysql服务shell>servicemysqldstop#停止mysql服务shell>servicemysqldrestart#重新启动mysql服务8、设置数据库密码

shell>/usr/local/mysql/bin/mysql-e"grantallprivilegeson*.*toroot@'127.0.0.1'identifiedby"root"withgrantoption;"shell>/usr/local/mysql/bin/mysql-e"grantallprivilegeson*.*toroot@'localhost'identifiedby"root"withgrantoption;"#开启远程登录(将host设为%即可)/usr/local/mysql/bin/mysql-e"grantallprivilegeson*.*toroot@'%'identifiedby"root"withgrantoption;"9、配置mysql环境变量

shell>vim/etc/profileshell>exportPATH=/usr/local/mysql/bin:$PATHshell>source/etc/profile其它注意事项

如果中途编译失败了,需要删除cmake生成的预编译配置参数的缓存文件和make编译后生成的文件,再重新编译。

shell>cd/opt/mysql-servershell>rm-fCMakeCache.txtshell>makeclean