前言:前面博文有介绍rpm安装mysql,这里介绍一下源码安装mysql,是怎么去安装的呢?源码安装过后你会对mysql的安装和目录结构有一个重新的认识和理解。
一、下载源码包。
https://dev.mysql.com/downloads/mysql/5.7.html:去除源码安装的mysql 源码安装mysql5.7_mysql
选择:
去除源码安装的mysql 源码安装mysql5.7_mysql_02
进入download下载:
去除源码安装的mysql 源码安装mysql5.7_去除源码安装的mysql_03
选择免登录下载:

去除源码安装的mysql 源码安装mysql5.7_mysql安装_04


复制地址:

去除源码安装的mysql 源码安装mysql5.7_mysql安装_05


得到如下地址:

https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29.tar.gz 可以页面端之间下载,也可以借助迅雷工具下载,或者之间在linux上wget方式下载。将下载的源码包放在自己linux服务器上。


接下来就是安装的过程。二、安装前的环境准备。

在进行mysql源码安装之前,mysql5.6之前boost库不需要自己安装,但是在mysql5.6之后,需要安装boost库,而且boost库的版本不能太低了,因为这里安装是的mysql5.7.29所以需要boost的依赖。查看系统有没有安装boost库:

rpm -qa | grep boost

去除源码安装的mysql 源码安装mysql5.7_去除源码安装的mysql_06


如果有,那么版本可以卸载了重新安装,如果没有需要安装boost库。(建议把系统自带的boost卸载)

卸载:yum -y remove boost-*

去除源码安装的mysql 源码安装mysql5.7_mysql_07


然卸载系统自带的mysql

去除源码安装的mysql 源码安装mysql5.7_mysql安装_08


如果有的话,可以卸载:rpm -e 包名

yum -y remove mysql-lib 这样删除的坏处是造成有的依赖没有了,比如crontab计划任务这个命令没有了,所以可以用rpm强制性删除:

rpm -e --nodeps mysql-libs-*

去除源码安装的mysql 源码安装mysql5.7_mysql_09


另外需要将yum源更换,cmake的版本不低于2.8。

(可以选择一块硬盘来给mysql安装。所以需要添加硬盘,分区,格式化,在此处省略。)

此处介绍安装的依赖包:

yum -y install gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel* make cmake

三、安装。

1、创建mysql的用户及用户组

创建用户组:groupadd mysql ----------添加一个mysql的组。

创建用户:useradd -g mysql mysql --------把mysql这个用户添加到mysql这个用户组里面去。(用组的概念更好的管理用户,特别是权限的控制非常方便。)

去除源码安装的mysql 源码安装mysql5.7_mysql安装_10

参数解释:

-M:不指定数组目录。

-s:该用户不能登录系统。

-r:指定用户为系统用户。

-g:指定用户的所属组。下载boost:版本为1.53,如果需要安装更高的版本,可以去下载源码来安装(不能使用1.60的版本,有可能不报错,可以下载1.59)。

地址为:

去除源码安装的mysql 源码安装mysql5.7_去除源码安装的mysql_11


打算把我的mysql安装到我挂载的一个盘符上,地址为/server:创建目录文件。

mkdir -p /server/data

把mysql安装包放在/server目录下

安装boost,下载:wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

解压:boost_1_59_0.tar.gz

tar zxf boost_1_59_0.tar.gz

mv boost_1_59_0 boost

去除源码安装的mysql 源码安装mysql5.7_mysql安装_12


解压:

tar -zxvf mysql-5.7.29.tar.gz

去除源码安装的mysql 源码安装mysql5.7_mysql_13


cd mysql-5.7.29

用cmake来安装。

所以需要安装cmake:

yum -y install cmake:

去除源码安装的mysql 源码安装mysql5.7_mysql安装_14

在mysql的解压目录cmake编译:

cmake -DCMAKE_INSTALL_PREFIX=/server/mysql \
-DMYSQL_DATADIR=/server/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMSQL_UNIX_ADDR=/server/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 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/server/boost

然后执行之后

去除源码安装的mysql 源码安装mysql5.7_mysql安装_15


去除源码安装的mysql 源码安装mysql5.7_mysql_16


编译:

去除源码安装的mysql 源码安装mysql5.7_去除源码安装的mysql_17


去除源码安装的mysql 源码安装mysql5.7_去除源码安装的mysql_18


等待安装:

去除源码安装的mysql 源码安装mysql5.7_boost库_19


make结束之后,再make install一下就可以了。

去除源码安装的mysql 源码安装mysql5.7_去除源码安装的mysql_20


内存不够造成编译错误,所以可以扩大内存和CPU内核数量。

去除源码安装的mysql 源码安装mysql5.7_boost库_21


扩大内存CPU。

去除源码安装的mysql 源码安装mysql5.7_mysql_22


重新make。分分钟编译完:

make -j 8

去除源码安装的mysql 源码安装mysql5.7_boost库_23


去除源码安装的mysql 源码安装mysql5.7_mysql安装_24


去除源码安装的mysql 源码安装mysql5.7_去除源码安装的mysql_25


还是不够:在创建分区的时候将读写数据改大一下。默认是512的。

然后make install。如果多次提醒内存不够的时候,重复执行 make -j 8 && make install。

去除源码安装的mysql 源码安装mysql5.7_boost库_26


以上就是安装完成的步骤。

去除源码安装的mysql 源码安装mysql5.7_boost库_27


四、配置。

1、修改目录权限:

chown -R mysql:mysql /server/mysql

去除源码安装的mysql 源码安装mysql5.7_mysql安装_28


2、备份原有的/etc/my.cnf:

cp /etc/my.cnf /etc/my.cnfbak

去除源码安装的mysql 源码安装mysql5.7_去除源码安装的mysql_29


3、拷贝安装的默认配置文件到/etc/my.cnf

cp /server/mysql/support-files/my-default.cnf /etc/my.cnf

去除源码安装的mysql 源码安装mysql5.7_mysql_30


手动修改里面的路径也是OK的,如果没有自动生成my-default.cnf文件。

4、初始化
/server/mysql/bin/mysqld --initialze --user=mysql --basedir=/server/mysql --datadir=/server/mysql/data/

5、设置开机自启,加入系统启动列表。

五、验证。
登录mysql,重置密码。
查看密码:

然后重新登录。

六、其他。

查linux内核的命令:

grep processor /proc/cpuinfo | wc -l

去除源码安装的mysql 源码安装mysql5.7_mysql安装_31


所以在编译的时候可以这样:

make -j 4,四个内核一起用来编译,提升编译的速度。

如何查看自己操作系统内核数:

grep processor /proc/cpuinfo | wc -l

去除源码安装的mysql 源码安装mysql5.7_boost库_32


4个内核一起使用好处是快,避免编译的是出错,如果直接make 的话,可能会错误,所以要用这个命令。