mysql5.6.16的安装和之前的5.5、5.1有些不同,编译的时候不再使用./configure
来进行了,使用了cmake
命令来进行编译项目。
准备编译环境
因为我的Linux是刚安装的,需要安装很多的必要程序。
yum -y install make gcc-c++ cmake bison-devel ncurses-devel gcc \ autoconf automake zlib* fiex* libxml* libmcrypt* libtool-ltdl-devel*
下载MySQL
进入http://dev.mysql.com/downloads/mysql/ 的source/Generic Linux (Architecture Independent), Compressed TAR Archive,文件mysql-5.6.16.tar.gz。
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16.tar.gz tar xvf mysql-5.6.16.tar.gz cd mysql-5.6.16
编译源码
接下来组织项目
cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/data/mysql/data \ -DSYSCONFDIR=/etc \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_UNIX_ADDR=/tmp/mysql/mysql.sock \ -DMYSQL_TCP_PORT=3306 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci
注意,这个cmake是替代以前的./configure 步骤。如果你需要更多的参数,请参考http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html。
有时候会出现类似的问题。
Googlemock was not found. gtest-based unit tests will be disabled. You can run cmake . -DENABLE_DOWNLOADS=1 to automatically download and build required components from source. — If you are inside a firewall, you may need to use an http proxy: export http_proxy=http://example.com:80
- 使用参数-DENABLE_DOWNLOADS=1 自动下载。
- 有网络限制,设置http代理
export http_proxy=http://example.com:80
。环境变量http_proxy
也为 curl 等其他工具所用。尽管 yum 可以识别大写或小写的 http_proxy,但curl 要求环境变量的名称是小写。
如果这个cmake这个步骤有出现问题,解决后重新再cmake一次。如果输出类似这样,那么就好了。
-- Running cmake version 2.6.4 -- MySQL 5.6.16 -- Packaging as: mysql-5.6.16-Linux-x86_64 -- HAVE_VISIBILITY_HIDDEN -- HAVE_VISIBILITY_HIDDEN -- HAVE_VISIBILITY_HIDDEN -- Using cmake version 2.6.4 -- Not building NDB -- Library mysqlclient depends on OSLIBS -lpthread;m;rt;dl -- GMOCK_SOURCE_DIR:/root/mysql-5.6.16/source_downloads/gmock-1.6.0 -- GTEST_LIBRARIES:gmock;gtest -- Library mysqlserver depends on OSLIBS -lpthread;m;rt;crypt;dl -- Configuring done -- Generating done -- Build files have been written to: /root/mysql-5.6.16
接着编译源码
make && make install
编译时间缓慢,等待中…
修改文件权限,生成数据库
groupadd mysql useradd -r -g mysql mysql cd /usr/local/mysql chown -R mysql:mysql . scripts/mysql_install_db --user=mysql --ldata=/data/mysql/data chown -R root . chown -R mysql data
说明:参数--ldata
说明你的数据文件存放的目录,如果你使用默认的路径,那么这个参数可以去除。如果你不增加此参数,但是在配置文件(见下方的datadir配置)中指定了其他的目录,那么会在启动MySQL的时候出现类似的提示:
Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/data/VM_208.pid).
出现这个的解决办法就是增加--ldata
参数,指定和配置文件中datadir
相同的值,重新执行mysql_install_db即可。
设置配置文件
MySQL 5.6.8开始,就不在分发my.cnf等配置的demo,所以想随便拿一个用都比较麻烦。
File Name(上面的优先) | Purpose |
---|---|
/etc/my.cnf |
Global options |
/etc/mysql/my.cnf |
Global options |
|
Global options |
$MYSQL_HOME/my.cnf |
Server-specific options |
defaults-extra-file |
The file specified with --defaults-extra-file= , if any |
~/.my.cnf |
User-specific options |
~/.mylogin.cnf |
Login path options |
[client] port=3306 socket=/var/lib/mysql/mysql.sock default-character-set = utf8 [mysqld] port=3306 bind-address=127.0.0.1 basedir=/usr/local/mysql datadir=/data/data/mysql/data socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 ############# default settings ################ # time zone default-time-zone = system character-set-server = utf8 default-storage-engine = InnoDB [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
我的这个配置比较简单,声明一下常用的变量,如果你需要对性能优化,那么你需要细细研读一下配置文件。可以参考
启动MySQL,开机自动启动设置
手动启动MySQL。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql /etc/init.d/mysql start ##或者 service mysql start
在上面的步骤后,开机自动启动设置
chkconfig --add mysql ##有的系统需要下面的 chkconfig --level 345 mysql on
可以参考:http://dev.mysql.com/doc/refman/5.6/en/automatic-start.html
修改root密码
默认的密码是空的,很危险,需要修改一下。
在此之前,为方便调用mysql,我们先生成一个mysql的软链。
ln -s /usr/local/mysql/bin/mysql /usr/bin/
然后修改密码
mysql -uroot -h127.0.0.1 -p mysql> SET PASSWORD = PASSWORD('123456');
将来如果你忘记了root密码,可以参考重置MySQL密码。
通过上面的步骤,就可以使用MySQL数据库了,另外可以为mysql安装phpmyadmin作为前端的管理界面。
参考资料
声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客
本文链接地址: 源码编译安装MySQL5.6.16 – https://www.chenyudong.com/archives/building-mysql-5-6-from-source.html
2014 年 9 月 26 日 — 23:43
你好请问你代码高亮的插件叫什么,看起来效果很好
2014 年 9 月 27 日 — 16:17
SyntaxHighlighter Evolved https://wordpress.org/plugins/syntaxhighlighter/
2014 年 9 月 27 日 — 20:38
thx
2015 年 4 月 7 日 — 21:24
谢谢,非常感谢
2015 年 5 月 4 日 — 16:28
写得很好
2015 年 7 月 14 日 — 14:52
我顶,有必要装那么多东西么?
2015 年 11 月 29 日 — 20:24
这个是我看过的最好的一个了,十分感谢
2018 年 1 月 22 日 — 10:25
会报错诶 CMake Warning: Manually-specified variables were not used by the project:
— Build files have been written to: /usr/local/src/mysql-5.6.16
2018 年 1 月 22 日 — 18:09
看上去这是一个warning。不是一个error。编译就停止了吗?
2018 年 8 月 7 日 — 02:13
他没有加-D。应当是-DWITH_READLINE这样写。可以编译,但后期会出问题。
2018 年 8 月 19 日 — 20:06
👍