#一.安装环境
系统版本
[root@localhost ~]# head -n 1 /etc/issue
CentOS release 6.5 (Final)
软件版本
cmake-3.3.0-rc3.tar.gz
mysql-5.5.48.tar.gz
安装编译代码需要环境
yum -y groupinstall "Development Tools"
yum install -y ncurses ncurses-devel
#二.安装Cmake
# tar xvf cmake-3.3.0-rc3.tar.gz
# cd cmake-3.3.0-rc3
根据里面的README.rst文件,运行
# ./bootstrap
没有error则
# make && make install
#三.编译MySQL5.5使用参数解释
| cmake配置选项 | 作用 |
|------------|-----------|
|-DCMAKE_INSTALL_PREFIX |指定安装根目录|
|-DMYSQL_DATADIR|指定数据存储目录|
|-DSYSCONFDIR |配置文件(my.cnf)目录|
|-DWITH_MYISAM_STORAGE_ENGINE|启用MYISAM引擎支持|
|-DWITH_INNOBASE_STORAGE_ENGINE=1 |启用InnoDB引擎支持|
|-DWITH_MEMORY_STORAGE_ENGINE=1 |启用MEMORY引擎支持|
|-DWITH_READLINE |绑定readline的终端快捷键及历史记录功能,在mysql5.6已移除|
|-DMYSQL_UNIX_ADDR|UNIX套接字文件路径。必须是绝对路径名|
|-DMYSQL_TCP_PORT |指定TCP端口|
|-DENABLED_LOCAL_INFILE |是否启用对负荷数据文件在客户端库地方能力|
可参考:
mysql5.6使用cmake配置选项官方介绍
mysql5.7使用cmake配置选项官方介绍
#四.编译安装MySQL5.5
# tar xvf mysql-5.5.48.tar.gz -C /usr/local/
# cd /usr/local/
创建一个硬连接,主要是可以查看mysql的版本号。
# ln -sv mysql-5.5.48 mysql
# cd mysql
查看各个文件的权限和属主属组
# ll
total 648
drwxr-xr-x. 2 7161 wheel 4096 Jan 14 21:47 BUILD
-rw-r--r--. 1 7161 wheel 8528 Jan 14 21:38 BUILD-CMAKE
drwxr-xr-x. 2 7161 wheel 4096 Jan 14 21:47 client
drwxr-xr-x. 4 7161 wheel 4096 Jan 14 21:47 cmake
-rw-r--r--. 1 7161 wheel 19216 Jan 14 21:38 CMakeLists.txt
drwxr-xr-x. 4 7161 wheel 4096 Jan 14 21:47 cmd-line-utils
-rw-r--r--. 1 7161 wheel 18583 Jan 14 21:38 config.h.cmake
-rw-r--r--. 1 7161 wheel 33523 Jan 14 21:38 configure.cmake
drwxr-xr-x. 3 7161 wheel 4096 Jan 14 21:47 extra
drwxr-xr-x. 4 7161 wheel 4096 Jan 14 21:47 include
-rw-r--r--. 1 7161 wheel 412459 Jan 14 21:47 INSTALL-SOURCE
-rw-r--r--. 1 7161 wheel 247 Jan 14 21:38 INSTALL-WIN-SOURCE
drwxr-xr-x. 3 7161 wheel 4096 Jan 14 21:47 libmysql
drwxr-xr-x. 3 7161 wheel 4096 Jan 14 21:47 libmysqld
drwxr-xr-x. 2 7161 wheel 4096 Jan 14 21:47 libservices
drwxr-xr-x. 2 7161 wheel 4096 Jan 14 21:47 man
drwxr-xr-x. 5 7161 wheel 4096 Jan 14 21:47 support-files
-rw-r--r--. 1 7161 wheel 88 Jan 14 21:38 VERSION
....
查看README和INSTALL-SOURCE,了解安装信息,如下:
shell> yum search libaio # search for info
shell> yum install libaio # install library
shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
# Next command is optional
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server
...
######上面的安装步骤是建立在已编译好的程序上的。那么,现在我们也开始准备编译mysql源码:
# yum install libaio
# groupadd mysql
# useradd -r -g mysql -s /bin/false mysql
# cd /usr/local/mysql
# chown -R mysql.mysql .
# mkdir /data
# chown -R mysql /data
# chmod u+x scripts/*
用cmake编译
# cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/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
如果想清理此前的编译所生成的文件,则需要使用如下命令:
make clean
rm CMakeCache.txt
# make && make install
使用# scripts/mysql_install_db --help 查看初始化mysql的帮助信息
# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data --user=mysql
# chown -R root /usr/local/mysql/*
# cp support-files/mysql.server /etc/init.d/mysqld
查看mysqld有没有执行权限,如没有,则:
# chmod +x /etc/init.d/mysqld
然后继续添加服务自启:
# chkconfig --add mysqld
# chkconfig --list mysqld
TIPS: mysql查找配置文件的位置,按照如下的顺序查找。
/etc/my.cnf -->/etc/mysql/my.cnf -->$BASEDIR/my.cnf(安装目录) -->~/.my.cnf(家目录)
一一查询完后,以最后一个为准。
根据自己主机的资源,配置选择my.cnf。
# cp support-files/my-large.cnf /etc/my.cnf
在/etc/my.cnf的[mysqld]中添加datadir = /data
#五.将mysql的安装目录的bin加入PATH:
方法一:
将
PATH=$PATH:/usr/local/mysql/bin
export PATH
这两行加入到/etc/profile的末尾,注意不要在等号的左右加空格,不然会报错。
# source /etc/profile
方法二:
在/etc/profile.d目录下面创建mysqld.sh,添加
PATH=$PATH:/usr/local/mysql/bin
#六.输出mysql的man手册至man命令的查找路径:
如果你使用的是最小系统安装,则没有安装man手册,执行如下命令安装man手册:
yum install -y man-pages man-pages-overrides
cp /etc/man.config.rpmnew /etc/man.config
编辑/etc/man.config,添加如下行即可:
MANPATH /usr/local/mysql/man
#七.输出mysql的头文件至系统头文件路径/usr/include:
这可以通过简单的创建链接实现:
# ln -sv /usr/local/mysql/include /usr/include/mysql
#八.输出mysql的库文件给系统库查找路径:
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
而后让系统重新载入系统库:
# ldconfig -v
到此结束。动手做一做吧!