Welcome 微信登录

首页 / 数据库 / MySQL / MySQL 5.7.10最新版本源代码安装详细过程

MySQL 5.7.10最新版本源代码安装详细过程1,下载地址:
安装包下载地址:http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.10.tar.gz可以wget下载,也可以在pc本地网页上下载完再远程传到linux上面去。安装文档地址:http://dev.mysql.com/doc/refman/5.7/en/installing-source-distribution.html文档干货在这里:# Preconfiguration setupshell> groupadd mysqlshell> useradd -r -gmysql -s /bin/false mysql# Beginning of source-build specificinstructionsshell> tar zxvf mysql-VERSION.tar.gzshell> cd mysql-VERSIONshell> cmake .shell> makeshell> make install# End of source-build specific instructions# Postinstallation setupshell> cd/usr/local/mysqlshell> chown -R mysql .shell> chgrp -R mysql .shell> bin/mysql_install_db--user=mysql    # Before MySQL 5.7.6shell> bin/mysqld--initialize --user=mysql # MySQL 5.7.6 and upshell> bin/mysql_ssl_rsa_setup              # MySQL 5.7.6 and upshell> chown -R root .shell> chown -R mysqldatashell> bin/mysqld_safe--user=mysql &# Next command is optionalshell> cpsupport-files/mysql.server /etc/init.d/mysql.server PS:看到差别在于,bin/mysqld--initialize --user=mysql # MySQL 5.7.6 and up2,添加mysql用户
groupadd mysql         
useradd -g mysql mysql         
autoreconf --force --install
libtoolize --automake --force
automake --force --add-missing3,安装组件准备
yum install gcc gcc-c++ -y
yum install -y ncurses-devel.x86_64
yum install -y cmake.x86_64
yum install -y libaio.x86_64
yum install -y bison.x86_64
yum install -y gcc-c++.x86_644,数据库规划
mysql软件目录  : /usr/local/mysql5710mysql数据目录:/home/data/mysql5710/data/mysql日志目录:/home/data/mysql5710/log/
mkdir -p /home/data/mysql5710/data
mkdir -p /usr/local/mysql5710mkdir -p/home/data/mysql5710/log/5,开始预编译
 time cmake .-DCMAKE_INSTALL_PREFIX=/usr/local/mysql5710 -DMYSQL_DATADIR=/home/data/mysql5710/data-DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR==/usr/local/mysql5710/mysql.sock-DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci有报错信息:CMake Error at cmake/boost.cmake:76(MESSAGE):  Youcan download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory> This CMake script will look for boost in <directory>.  If it is not there,  itwill download and unpack it (in that directory) for you.  Ifyou are inside a firewall, you may need to use an http proxy:添加参数-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/home/mysql5710/,继续编译:time cmake .-DCMAKE_INSTALL_PREFIX=/usr/local/mysql5710-DMYSQL_DATADIR=/home/data/mysql5710/data -DWITH_INNOBASE_STORAGE_ENGINE=1-DMYSQL_UNIX_ADDR==/usr/local/mysql5710/mysql.sock -DMYSQL_USER=mysql-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DDOWNLOAD_BOOST=1-DWITH_BOOST=/usr/local/boost/看到报错信息:-- [download 31% complete]-- Download failed, error: 28;"Timeoutwas reached"CMake Error at cmake/boost.cmake:177(MESSAGE):  Youcan try downloading http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz manually using curl/wget or a similar tool, or increase the value of DOWNLOAD_BOOST_TIMEOUT (which is now 600 seconds)Call Stack (most recent call first): CMakeLists.txt:435 (INCLUDE)-- Configuring incomplete, errors occurred!然后再继续,设置一个DOWNLOAD_BOOST_TIMEOUT=28800来继续下载:[root@linuxidc mysql-5.7.10]# timecmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5710-DMYSQL_DATADIR=/home/data/mysql5710/data -DWITH_INNOBASE_STORAGE_ENGINE=1-DMYSQL_UNIX_ADDR==/usr/local/mysql5710/mysql.sock -DMYSQL_USER=mysql-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DDOWNLOAD_BOOST=1-DWITH_BOOST=/usr/local/boost/ -DOWNLOAD_BOOST_TIMEOUT=28800也不行,报一样的错误,看来还是需要手动下载了mkdir -p /usr/local/boostwget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz然后继续编译:time cmake .-DCMAKE_INSTALL_PREFIX=/usr/local/mysql5710-DMYSQL_DATADIR=/home/data/mysql5710/data -DWITH_INNOBASE_STORAGE_ENGINE=1-DMYSQL_UNIX_ADDR==/usr/local/mysql5710/mysql.sock -DMYSQL_USER=mysql-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=/usr/local/boost/最好出现如下信息表示编译通过:……-- CMAKE_BUILD_TYPE: RelWithDebInfo-- COMPILE_DEFINITIONS:_GNU_SOURCE;_FILE_OFFSET_BITS=64;HAVE_CONFIG_H-- CMAKE_C_FLAGS:  -Wall -Wextra -Wformat-security -Wvla-Wwrite-strings -Wdeclaration-after-statement-- CMAKE_CXX_FLAGS:  -Wall -Wextra -Wformat-security -Wvla-Woverloaded-virtual -Wno-unused-parameter-- CMAKE_C_FLAGS_RELWITHDEBINFO: -O3 -g-fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF-- CMAKE_CXX_FLAGS_RELWITHDEBINFO: -O3 -g-fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF-- Configuring done-- Generating done-- Build files have been written to: /root/mysql-5.7.106,time make
这个时间比较长,需要耐心等待中,如下所示:[root@linuxidc mysql-5.7.10]# timemake……Scanning dependencies of targetmysql_embedded[100%] Building CXX objectlibmysqld/examples/CMakeFiles/mysql_embedded.dir/__/__/client/completion_hash.cc.o[100%] Building CXX objectlibmysqld/examples/CMakeFiles/mysql_embedded.dir/__/__/client/mysql.cc.o[100%] Building CXX objectlibmysqld/examples/CMakeFiles/mysql_embedded.dir/__/__/client/readline.cc.oLinking CXX executable mysql_embedded[100%] Built target mysql_embeddedScanning dependencies of targetmysqltest_embedded[100%] Building CXX objectlibmysqld/examples/CMakeFiles/mysqltest_embedded.dir/__/__/client/mysqltest.cc.oLinking CXX executable mysqltest_embedded[100%] Built target mysqltest_embeddedScanning dependencies of targetmy_safe_process[100%] Building CXX objectmysql-test/lib/My/SafeProcess/CMakeFiles/my_safe_process.dir/safe_process.cc.oLinking CXX executable my_safe_process[100%] Built target my_safe_process7, time make install
这个执行起来比较快一些,如下所示:[root@linuxidc mysql-5.7.10]# timemake install……-- Installing:/usr/local/mysql5710/mysql-test/lib/My/SafeProcess/my_safe_process-- Up-to-date:/usr/local/mysql5710/mysql-test/lib/My/SafeProcess/my_safe_process-- Installing: /usr/local/mysql5710/mysql-test/lib/My/SafeProcess/Base.pm-- Installing:/usr/local/mysql5710/support-files/my-default.cnf-- Installing:/usr/local/mysql5710/support-files/mysqld_multi.server-- Installing:/usr/local/mysql5710/support-files/mysql-log-rotate-- Installing:/usr/local/mysql5710/support-files/magic-- Installing:/usr/local/mysql5710/share/aclocal/mysql.m4-- Installing:/usr/local/mysql5710/support-files/mysql.server8,配置my.cnf启动参数文件
[client]#password     = [your_password]port            = 3308socket          = /usr/local/mysql5710/mysql.sockloose-default-character-set=gbk[mysqld]default-storage-engine=INNODBgroup_concat_max_len =99999# generic configuration optionsport            = 3307socket          = /usr/local/mysql5710/mysql.sockpid-file        = /usr/local/mysql5710/mysqld.piddatadir       = /home/data/mysql5710/datauser            = mysqlsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESskip-external-lockingskip-name-resolveexplicit_defaults_for_timestamp……9,初始化数据库
shell> bin/mysql_install_db--user=mysql    # Before MySQL 5.7.6shell> bin/mysqld--initialize --user=mysql # MySQL 5.7.6 and upshell> bin/mysql_ssl_rsa_setup              # MySQL 5.7.6 and up9.1 利用my.cnf初始化
[root@linuxidc root]# cd /usr/local/mysql5710/bin/[root@linuxidc bin]# ./mysqld--initialize --user=mysql --basedir=/usr/local/mysql5710--datadir=/home/data/mysql5710/data --defaults-file=/usr/local/mysql5710/my.cnf2015-12-17T09:44:00.021750Z 0 [Warning] TIMESTAMPwith implicit DEFAULT value is deprecated. Please use--explicit_defaults_for_timestamp server option (see documentation for moredetails).2015-12-17T09:44:00.462018Z 0 [Warning] InnoDB:New log files created, LSN=457902015-12-17T09:44:00.652738Z 0 [Warning] InnoDB:Creating foreign key constraint system tables.2015-12-17T09:44:00.712997Z 0 [ERROR] unknownvariable "defaults-file=/usr/local/mysql5710/my.cnf"2015-12-17T09:44:00.713034Z 0 [ERROR] Aborting[root@linuxidc bin]#貌似报错了,不识别defaults-file的参数9.2 默认启动
会报错如下:[root@linuxidc bin]# rm -rf/home/data/mysql5710/data/*[root@linuxidc bin]# ./mysqld--initialize --user=mysql --basedir=/usr/local/mysql5710--datadir=/home/data/mysql5710/data2015-12-17T09:48:07.344700Z 0 [Warning]TIMESTAMP with implicit DEFAULT value is deprecated. Please use--explicit_defaults_for_timestamp server option (see documentation for moredetails).2015-12-17T09:48:07.705225Z 0 [Warning]InnoDB: New log files created, LSN=457902015-12-17T09:48:07.795939Z 0 [Warning]InnoDB: Creating foreign key constraint system tables.2015-12-17T09:48:07.807878Z 0 [Warning] Noexisting UUID has been found, so we assume that this is the first time thatthis server has been started. Generating a new UUID: 46bcea55-a4a3-11e5-b7ee-000c29ff8c77.2015-12-17T09:48:07.809546Z 0 [Warning]Gtid table is not ready to be used. Table "mysql.gtid_executed" cannot beopened.2015-12-17T09:48:07.811257Z 1 [Note] Atemporary password is generated for root@localhost: 4e3taITlXU%/[root@linuxidc bin]#PS:看到这里有一个初始化root密码,记下来,不然启动完后,mysql登录就报密码错误登录不了。10,安装ssl
[root@linuxidc bin]#./mysql_ssl_rsa_setupGenerating a 2048 bit RSA private key..........+++.................................................................................+++writing new private key to "ca-key.pem"-----Generating a 2048 bit RSA private key..+++..................................................................................................................................................................+++writing new private key to "server-key.pem"-----Generating a 2048 bit RSA private key.......................................................................+++..+++writing new private key to "client-key.pem"-----[root@linuxidc bin]#11,部署启动服务
准备服务:[root@linuxidc bin]# cp../support-files/mysql.server /etc/init.d/mysqld5710[root@linuxidc bin]# chmod 700/etc/init.d/mysqld5710[root@linuxidc bin]# echo"export PATH=$PATH:/usr/local/mysql5710/bin">>/etc/profile[root@linuxidc bin]# source/etc/profile[root@linuxidc bin]#设置开机启动[root@linuxidc bin]# chkconfigmysqld5710 on[root@linuxidc bin]#启动报错:[root@linuxidc bin]# servicemysqld5710 startStarting MySQL....The server quit withoutupdating PID file[失败]/local/mysql5710/mysqld.pid).[root@linuxidc bin]#查看后台报错日志mysqld.log:2015-12-17T09:54:40.004720Z 0 [ERROR]InnoDB: redo log file "./ib_logfile0" exists. Creating system tablespace withexisting redo log files is not recommended. Please delete all redo log files before creating new system tablespace.2015-12-17T09:54:40.004744Z 0 [ERROR]InnoDB: InnoDB Database creation was aborted with error Generic error. You mayneed to delete the ibdata1 file before trying to start up again.2015-12-17T09:54:40.305233Z 0 [ERROR]Plugin "InnoDB" init function returned error.2015-12-17T09:54:40.305292Z 0 [ERROR]Plugin "InnoDB" registration as a STORAGE ENGINE failed.2015-12-17T09:54:40.305305Z 0 [ERROR]Failed to initialize plugins.2015-12-17T09:54:40.305315Z 0 [ERROR]Aborting2015-12-17T09:54:40.305333Z 0 [Note] Binlogend2015-12-17T09:54:40.306240Z 0 [Note]/usr/local/mysql5710/bin/mysqld: Shutdown complete解决办法:[root@linuxidc data]# rm -rfib_logfile0 ib_logfile1[root@linuxidc data]#然后再启动mysql,有报错信息如下:2015-12-17T10:02:46.169594Z 0 [Warning] InnoDB: Cannot open tablemysql/plugin from the internal data dictionary of InnoDB though the .frm filefor the table exists. Please refer to http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html for how toresolve the issue.mysqld: Table "mysql.plugin" doesn"t exist2015-12-17T10:02:46.169680Z 0 [ERROR] Can"t open the mysql.plugintable. Please run mysql_upgrade to create it.2015-12-17T10:02:46.169907Z 0 [ERROR] unknown variable"max_connection=10000"2015-12-17T10:02:46.169928Z 0 [ERROR] Aborting修改my.cnf里面,注释掉max_connection=10000即可。后面陆陆续续报如下错误2015-12-17T10:07:22.243181Z 0 [ERROR]unknown variable "max_user_connection=3009"2015-12-17T10:16:15.870396Z 0 [ERROR]unknown variable "thread_concurrency=8"2015-12-17T10:16:51.251271Z 0 [ERROR]unknown option "--myisam_recover"然后全部在my.cnf里面注释掉,再启动mysqld服务,正常启动了,如下所示:[root@linuxidc mysql5710]# servicemysqld5710 startStarting MySQL..                                         [确定][root@linuxidc mysql5710]#至此,mysql5.7.10安装部署成功了。12,重置密码
利用mysqladmin重置密码[root@linuxidc mysql5710]#./bin/mysqladmin -h localhost -uroot password "root" -p"4e3taITlXU%/"--socket=/usr/local/mysql5710/mysql.sockmysqladmin: [Warning] Using a password onthe command line interface can be insecure.Warning: Since password will be sent toserver in plain text, use ssl connection to ensure password safety.[root@linuxidc mysql5710]#使用新密码登录:[root@linuxidc mysql5710]# mysql--socket=/usr/local/mysql5710/mysql.sock -uroot -prootWarning: Using a password on the commandline interface can be insecure.Welcome to the MySQL monitor.  Commands end with ; or g.Your MySQL connection id is 7Server version: 5.7.10-log SourcedistributionCopyright (c) 2000, 2013, Oracle and/or itsaffiliates. All rights reserved.Oracle is a registered trademark of OracleCorporation and/or itsaffiliates. Other names may be trademarksof their respectiveowners.Type "help;" or "h" for help. Type "c" toclear the current input statement.mysql>OK,mysql5.7.10安装彻底结束了,下面就可以开始验证5.7的新特性了。13,番外篇
http://www.lengdo.com/blog/view/id/52.html,这里的blog主,说:MySQL启动后一切正常,但是大概在五六分钟后MySQL内存开始莫名飙升到500M,然后就稳定在500M左右,所有的 buffer, size, cache 等都是按最小配置,无 SQL 请求,甚至关闭 innodb 都无效。所以准备探讨一番他的症状所在。启动mysql5.7后,剩余1927M内存,如下所示:[root@linuxidc mysql-5.7.10]#[root@linuxidc mysql-5.7.10]# free-m            total     used     free    shared    buffers   cachedMem:        32110      30182     1927          0        349   24095-/+ buffers/cache:     5737   26372Swap:       3967       12     3955[root@linuxidc mysql-5.7.10]#[root@linuxidc mysql-5.7.10]#停止mysql5.7后,剩余2841m内存,如下所示:[root@linuxidc mysql-5.7.10]#service mysqld5710 stopShutting down MySQL..                                      [确定][root@linuxidc mysql-5.7.10]# free-m            total     used     free    shared    buffers   cachedMem:        32110      29268     2841          0        349   24083-/+ buffers/cache:     4835   27274Swap:       3967       12     3955[root@linuxidc mysql-5.7.10]#大概用了一个G左右,而我的buffer_pool设置就是4G,可能是启动mysql加载buffer pool的内存消耗,有待后续验证。本文永久更新链接地址