MySQL的编译安装
记录本人在阿里云服务器上编译安装MySQL5.7.29的全过程(2020/8/13 12:00)
安装的方式都差不多,可以按自己的需要下载其他版本
直接上步骤,看官按需修改即可:
1、下载MySQL源码包并上传至linux
这一步很简单,就是去MySQL的官网下载MySQL社区版5.7.29的源码包
地址:https://downloads.mysql.com/archives/community/
上传Linux可以使用Xftp或者Linux的lrzsz命令中的rz命令
2、解压源码包和安装解决MySQL软件依赖关系的包
解压源码包:
rpm -ivh mysql-community-5.7.29-1.el7.src.rpm
安装解决MySQL软件依赖关系的包:
yum install cmake ncurses-devel gcc gcc-c++ bzip2 openssl-devel -y
3、新建用户mysql及新建数据目录文件夹,并修改数据目录的拥有者为mysql
新建用户:
useradd -r -s /sbin/nologin mysql
新建文件夹:
mkdir -p /data/mysql
修改数据目录的拥有者为mysql:
chown mysql:mysql /data/mysql
4、进入源码包位置并解压源码包,并将boost包移动到mysql解压的包里
进入目录:
cd /root/rpmbuild/SOURCES
解压源码包并移动:
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
5、进入mysql-5.7.29并进行编译前的配置
进入目录:
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
参数讲解:
- -DCMAKE_INSTALL_PREFIX=/usr/local/sc_mysql 指定MySQL的安装路径
- -DMYSQL_DATADIR=/data/mysql 指定MySQL的存放目录
- -DSYSCONFDIR=/etc 指定MySQL配置文件的存放位置
- -DMYSQL_USER=mysql 指定用户名
- -DDEFAULT_CHARSET=utf8_general_ci 指定默认的字符集为utf-8
- -DWITH_BOOST=boost_1_59_0 指定boost源
6、编译安装
启动2个进程去编译,加快速度:
make -j 2
这里的数字2为进程,根据cpu核数自行修改
安装编译好的二进制文件到指定的目录:
make install
7、备份原来的my.cnf配置文件,然后清空这个文件,这个文件是mariadb的配置文件,不是mysql的
cp /etc/my.cnf /root/mysql.cnf.bak
>/etc/my.cnf
第一行是备份,第二行是清空
8、进入编译安装好的mysql的目录,并初始化mysql,并且将日志和临时密码重定向到/root/temp_password.txt文件里
进入目录:
cd /usr/local/mysql/bin
初始化:
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql &>/root/temp_password.txt
9、修改PATH变量并拷贝mysqld的程序文件到指定的目录,方便后面设置mysqld服务开机启动
echo 'PATH=$PATH:/usr/local/mysql/bin' >>/etc/bashrc
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
10、启动mysql
service mysqld start
从保存的临时密码文件里,截取出临时密码,赋值给一个变量temp_pwd
temp_pwd=$(cat /root/temp_password.txt |tail -1|awk '{print $11}')
给MySQL设置密码:
mysql -uroot -p$temp_pwd --connect-expired-password -e “set password=‘此处填写密码’”
进入MySQL:
mysql -uroot -p"此处填写密码"
11、修改配置文件my.cnf
my.conf配置
#socket是用来指定socket文件的路径,方便客户端连接找到
[client]
socket=/data/mysql/mysql.sock
[mysqld]
socket=/data/mysql/mysql.sock