【原创】RockyLinux9.3手动编译MySQL8.2.0源码,超详细!!

前言

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包下载下来就能直接给其他服务器使用了,注意!其他服务器也必须是RockyLinux9.3版本,否则会因为组件版本问题比如openssl、glibc等等版本不同,导致MySQL启动失败!!

注意!其他服务器的存放目录也是/usr/local,在这个目录进行解压,保持目录为/usr/local/mysql,否则需要通过my.cnf修改目录。

创建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

在结尾添加一行内容(指定使用mysql用户去启动MySQL):

su - mysql /usr/local/mysql/support-files/mysql.server start

添加完成后执行一下rc.local,看看是否出现报错什么的

/etc/rc.d/rc.local

保存后重启服务器看效果

结语

该手动编译的MySQL没有my.cnf,需要自己手动创建,就在/usr/local/mysql目录下,大家看看/usr/local/mysql/support-files/mysql.server的源码就知道了。

my.cnf可以通过./mysqld --verbose --help,查看mysqld的默认配置,将需要的配置放入my.cnf中。

如果需要讨论交流的,可以进群讨论:170618278(群很水,请见谅)。

如果本博客存在什么问题,请合理评论讨论交流,谢谢!!

  • 27
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值