一键编译安装MySQL-5.7.29(超详)
环境为
centos7(虚拟机)
版本为
MySQL-comunity.5.7.29
展望
希望通过详细的介绍,让初学者明白整个编译安装的思路,大概的一个方向,不是简单的停留在敲命令上。这对于编译安装的理解有很大的帮助。
官方文档
链接: link,https://dev.mysql.com/doc/refman/5.7/en/source-installation.html
1、解决依赖关系
yum install cmake ncurses-devel gcc gcc-c++ vim lsof bzip2 openssl-devel -y
这里的关系可以看官方文档,安装之前一定记得先安装这些软件。
2、下载源码包
注意下载保存的位置
1.wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-5.7.29-1.el7.src.rpm
2.curl -o https://downloads.mysql.com/archives/get/p/23/file/mysql-community-5.7.29-1.el7.src.rpm
两种方法选其一
3、安装rpm包(可以理解为第一层解压)
rpm -ivh mysql-community-5.7.29-1.el7.src.rpm
将会生成一个 rpmbuilt
目录,默认路径为root用户的家目录下。在路径/root/rpmbuilt/SOURCES
下,就可以看到mysql-5.7.29.tar.gz和boost_1_59_0.tar.bz2
4、解压源码包(可理解为第二层解压)
tar xf mysql-5.7.29.tar.gz
tar xf boost_1_59_0.tar.bz2
mv boost_1_59_0 mysql-5.7.29
进入步骤3中的目录将其解压,这里划重点,同时也要将boost库解压,将其移动到mysql-5.7.29
中。
5、建立mysql用户和存放数据文件
useradd -r -s /sbin/nologin mysql
mkdir -p /data/mysql
下一步中将会要设置mysql的启动用户和存放数据的文件,所以提前将其新建好。
6、编译前的配置
cd mysql-5.7.29
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost_1_59_0
这里一定要先进入到mysql-5.7.29
这个目录下,再运行,生成配置文件 Makefile
。
下面介绍cmake常用的参数:
-DCMAKE_INSTALL_PREFIX=/xxx/x
设置mysql安装路径
-DMYSQL_DATADIR=/xxx/xxx/xx
设置mysql数据保存路径
-DSYSCONFDIR=/xx/xx
设置mysql配置文件保存路径-DMYSQL_USER=mysql
以那个用户来打开mysql服务-DDEFAULT_CHARSET=utf8
设置编码格式-DDEFAULT_COLLATION=utf8_general_ci
设置排序规则-DWITH_BOOST=boost_1_59_0
这里就是上面说的boost库,它是一个c++的扩展库。上面也是写路径,由于前面将其移动到mysql-5.7.29下,可以直接写其名字。
7、编译
#编译,启动2个进程去编译,加快速度
make -j 2
前提也是要在mysql-5.7.29
目录下执行命令。这里根据自己电脑的配置选择进程去编译。在硬件允许的条件下,越多越好。这里编译大概需要20分钟左右,具体由电脑配置决定。
8、安装
#安装
make install
执行该命令需在编译好的mysql-5.7.29
文件里,否则找不到上面步骤产生的编译配置文件。
9、配置文件
cp /etc/my.cnf /root/mysql.cnf.bak
>/etc/my.cnf
原配置文件为Linux自带mariadb的。
配置的内容如下:
[mysqld_safe]
log-error=/data/mysql/mysql.log
[client]
socket=/data/mysql/mysql.sock
[mysqld]
socket=/data/mysql/mysql.sock
port = 3306
open_files_limit = 8192
innodb_buffer_pool_size = 256M
[mysql]
auto-rehash
prompt=\\u@\\d \\R:\\m mysql>
10、初始化及临时密码
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql &>/root/temp_password.txt
初始化mysqld,并将临时密码重定向到 /root/temp_password.txt
里。
11、PATH和关闭防火墙
#修改PATH变量
echo 'PATH=$PATH:/usr/local/mysql/bin' >>/etc/bashrc
#关闭防火墙firewalld服务
service firewalld stop
#设置firewalld服务开机不启动
systemctl disable firewalld
#临时关闭selinux
setenforce 0
#永久修改selinux配置文件里的内容
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
防火墙看需要,选择是否关闭。
12、启动服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#设置MySQL开机启动
chkconfig mysqld on
#启动MySQL
service mysqld start
13、登录MySQL
#从保存的临时密码文件里,截取出临时密码
temp_pwd=$(cat /root/temp_password.txt |tail -1|awk '{print $11}')
#给MySQL设置密码
mysql -uroot -p$temp_pwd --connect-expired-password -e "set password='xxxxxxxxxx'"
参考
链接:http://blog.csdn.net/xyang81/article/details/51792144