前言
MySQL安装如果使用rpm包安装实在过于麻烦,缺这缺那的,我就想能不能就源码包自己手动编译安装,编译完的包可以给其他服务器直接用,这样只需要麻烦一次,后面就方便了。至于为什么不用RockyLinux8.6版本,因为我试过了,编译成功的MySQL执行报错了,我也不知道什么原因导致的,索性换到最新的RockyLinux9.3版本了。
我这里用的电脑都是X86_64平台的,如果是其他CPU架构的机型则需要下载对应CPU架构版本的rpm包。
这篇文章是我在一台虚拟机上编译完成后,总结经验之后,第三次编译了,一边操作一边写的这篇博客,保证真实有效,跟着我操作,绝对能够编译成功!
提前准备
这准备的东西就多了,首先是RockyLinux9.3版本,这个直接去官网下载,最小化安装即可。然后是装一大堆依赖包。
安装完后在/opt下有个rh目录,这个rh可千万不能手贱删了!!删了后cmake会报错!!(别问我是怎么知道的,因为我手贱把它删了,导致只能全部重来)
yum install -y cmake gcc-c++ gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc openssl-devel ncurses-devel rpcgen bzip2
下载MySQL的源码包
MySQL :: Download MySQL Community Server (Archived Versions)
选择版本8.2.0,截止目前发稿(2024.3.26)的最新版本
选择Source Code,选择All Operating System
下载到MySQL的源码包
下载boost包
https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.bz2
下载libtirpc-devel
RPM resource libtirpc-devel
ctrl+F网页搜索:libtirpc-devel-1.3.3-2.el9.x86_64.rpm
并下载这个包
下载libtirpc
RPM resource libtirpc
ctrl+F网页搜索:libtirpc-devel-1.3.3-2.el9.x86_64.rpm
并下载这个包
上传文件
刚才下载的所有的包,到/opt目录下,并cd /opt
安装boost包
bzip2 -d boost_1_77_0.tar.bz2
注意这一过程时间比较长,且没有日志打印
再次解压
tar xvf boost_1_77_0.tar
执行安装
cd boost_1_77_0
./bootstrap.sh
./b2
./b2 headers
安装另外两个rpm包
cd /opt
rpm -ivh libtirpc-devel-1.3.3-2.el9.x86_64.rpm
rpm -ivh libtirpc-1.3.3-2.el9.x86_64.rpm
编译安装MySQL
解压MySQL源码包
tar zxvf mysql-8.2.0.tar.gz
cd mysql-8.2.0
创建build目录,并cmake
mkdir build
cd build
cmake .. -DWITH_BOOST=/opt/boost_1_77_0
当出现-- Build files have been written to: /opt/mysql-8.2.0/build,说明cmake完成了
进行make操作
这个根据自己的电脑性能量力而行,选择合适的job数量,由于我的电脑配置比较高,我选择了32个job。这个对电脑CPU和内存的要求都很高。我电脑是i7 12700H(14c20T)+64GB内存,所以我才敢直接-j 32
make -j 32
电脑性能越强悍,这一步时间越短
经过漫长的编译等待时间,终于编译好了
进行make install
make install
打包MySQL
在执行完make install后在/usr/local目录下就生成了MySQL编译完的包了,执行
cd /usr/local
tar czvf mysql-bin.8.2.0.tar.gz mysql/
将这个tar包下载下来就能直接给其他服务器使用了
创建MySQL用户
目前8.2.0版本的MySQL无法使用root用户进行启动,因此需要创建一个MySQL用户
useradd mysql
赋予mysql用户mysql目录的权限
cd /usr/local
chown -R mysql:mysql mysql
运行MySQL
su mysql
cd /usr/local/mysql
bin/mysqld --initialize --user=mysql
bin/mysql_ssl_rsa_setup
bin/mysqld_safe --user=mysql &ps aux|grep mysql
进入MySQL
./bin/mysql -uroot -p
该密码可以在mysqld initialize这一步里找到,输入该密码即可进入MySQL
到了这一步可以说是大功告成!!MySQL成功编译,并能够进入了
修改root用户密码,并开启远程登录
alter user user() identified by '你的密码';
use mysql;
update user set host = '%' where user = 'root';
flush privileges;
DBeaver连接MySQL
由于版权问题,公司不允许使用Navicat,目前这里使用DBeaver进行连接
直接连接的话会报这个错
在驱动属性中,将allowPublicKeyRetrieval改为true即可
这样就能连接成功了,这就是我们亲手编译完成的MySQL8.2.0
MySQL设置自启
返回使用root用户
chmod 755 /etc/rc.d/rc.local
vi /etc/rc.d/rc.local
在结尾添加一行内容:
/usr/local/mysql/support-files/mysql.server start
保存后重启服务器看效果
结语
该手动编译的MySQL没有my.cnf,需要自己手动创建,就在/usr/local/mysql目录下,大家看看/usr/local/mysql/support-files/mysql.server的源码就知道了。
如果需要讨论交流的,可以进群讨论:170618278(群很水,请见谅)。
如果本博客存在什么问题,请合理评论讨论交流,谢谢!!