MySQL8.0.40编译安装(Mysql8.0.40 Compilation and Installation)

MySQL8.0.40编译安装

近期MySQL发布了8.0.40版本,与之前的版本相比,部分依赖包发生了变化,因此重新编译一版,也便于大家参考。

1.  下载源码

选择对应的版本、选择源码、操作系统

图片

如果没有登录或者没有MySQL官网账号,可以选择只下载

图片

2.  进行编译

上传至机器,解压源码

tar -zxvf  mysql-boost-8.0.40.tar.gz

图片

2.1  准备阶段

因为编译安装需要cmake、make等命令,因此需提前安装相关依赖包及命令

yum install cmake make gcc gcc-c++ autoconf bison automake \openssl openssl-devel zlib* fiex* libxml* \ncurses-devel libmcrypt* libtool-ltdl-devel* -yyum install gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binu

tils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc -y

由于MySQL从8.0.16版本开始,要求cmake的版本是cmake3以上,gcc版本为gcc 11.*以上版本,而且MySQL8.0.40的gcc需要12.*版本,因此如果使用Centos7等较低版本的操作系统,cmake及gcc  g++版本较低,需要升级后才能编译。相关包升级附在文末

创建相关目录

 mkdir  /usr/local/mysql  mkdir -p /data/mysql/mysql3306/{data,logs,tmp,etc}

2.2  编译检查阶段

开始编译

cmake -DINSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/data/mysql/mysql3306/data \-DMYSQL_UNIX_ADDR=/data/mysql/mysql3306/tmp/mysql.sock \-DMYSQL_TCP_PORT=3306 \-DWITH_INNODB_STORAGE_ENGINE=1 -DWITH_EXTRA_CHARSETS=all \-DFORCE_INSPECT=1 \-DCONNECT_WITH_SYSTEMD=OFF \-DDEFAULT_CHARSET=utf8mb4 \-DDEFAULT_COLLATION=utf8mb4_unicode_ci \-DWITH_BOOST=/usr/local/mysql-8.0.40/boost/boost_1_77_0  \-DENABLE_DOWNLOADS=1

出现报错

-- Running cmake version 3.26.5-- This is .el9. as found from 'rpm -qf /'-- Looking for a devtoolset compiler-- Using /opt/rh/gcc-toolset-12/root/usr/bin/gcc-- Using /opt/rh/gcc-toolset-12/root/usr/bin/g++-- CMAKE_MODULE_PATH is /usr/local/mysql-8.0.40/cmake-- MySQL 8.0.40-- The C compiler identification is GNU 12.2.1-- The CXX compiler identification is GNU 12.2.1-- Detecting C compiler ABI info-- Detecting C compiler ABI info - done-- Check for working C compiler: /opt/rh/gcc-toolset-12/root/usr/bin/gcc - skipped-- Detecting C compile features-- Detecting C compile features - done-- Detecting CXX compiler ABI info-- Detecting CXX compiler ABI info - done-- Check for working CXX compiler: /opt/rh/gcc-toolset-12/root/usr/bin/g++ - skipped-- Detecting CXX compile features-- Detecting CXX compile features - done-- Source directory /usr/local/mysql-8.0.40-- Binary directory /usr/local/mysql-8.0.40CMake Error at CMakeLists.txt:642 (MESSAGE):  Please do not build in-source.  Out-of source builds are highly  recommended: you can have multiple builds for the same source, and there is  an easy way to do cleanup, simply remove the build directory (note that  'make clean' or 'make distclean' does *not* work)
  You *can* force in-source build by invoking cmake with  -DFORCE_INSOURCE_BUILD=1

因此加上  -DFORCE_INSOURCE_BUILD=1 再编译一次

cmake -DINSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/data/mysql/mysql3306/data \-DMYSQL_UNIX_ADDR=/data/mysql/mysql3306/tmp/mysql.sock \-DMYSQL_TCP_PORT=3306 \-DWITH_INNODB_STORAGE_ENGINE=1 -DWITH_EXTRA_CHARSETS=all \-DFORCE_INSPECT=1 \-DCONNECT_WITH_SYSTEMD=OFF \-DDEFAULT_CHARSET=utf8mb4 \-DDEFAULT_COLLATION=utf8mb4_unicode_ci \-DWITH_BOOST=/usr/local/mysql-8.0.40/boost/boost_1_77_0  \-DENABLE_DOWNLOADS=1  \-DFORCE_INSOURCE_BUILD=1

出现如下新报错信息

CMake Error at cmake/readline.cmake:93 (MESSAGE):  Curses library not found.  Please install appropriate package,
      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.Call Stack (most recent call first):  cmake/readline.cmake:127 (FIND_CURSES)  cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)  CMakeLists.txt:1929 (MYSQL_CHECK_EDITLINE)-- Configuring incomplete, errors occurred!

图片

缺少ncurses-devel依赖包所致,按照提示进行安装

yum install -y  ncurses-devel*

再次编译出现新错误

图片

缺少依赖,继续补充

yum install libtirpc* -y

安装后依旧报错(因为我的操作系统yum安装时没有libtirpc-devel),因此我选择查询出源码里的rpc.h文件,直接软连接到 /usr/include/ ,不建议这么操作,如果可以下载对应的安装包,建议安装依赖包

 find / -name rpc.h/usr/local/mysql-8.0.40/extra/libevent/libevent-2.1.11-stable/include/event2/rpc.h/usr/local/mysql-8.0.40/extra/tirpc/libtirpc-1.3.5/tirpc/rpc/rpc.h/usr/local/mysql-8.0.40/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/windeps/sunrpc/rpc/rpc.hln -s /usr/local/mysql-8.0.40/extra/tirpc/libtirpc-1.3.5/tirpc/rpc/rpc.h   /usr/include/rpc/rpc.h

图片

效果确实有效,继续进行编译,出现新问题:

CMake Warning at cmake/rpc.cmake:30 (MESSAGE):  Cannot find rpcgen executable.  You need to install the required packages:
    Debian/Ubuntu:              apt install rpcsvc-proto    RedHat/Fedora/Oracle Linux: yum install rpcgen    SuSE:                       zypper install glibc-devel
Call Stack (most recent call first):  plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:113 (WARN_MISSING_RPCGEN_EXECUTABLE)  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)CMake Error at plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:114 (MESSAGE):  Could not find rpcgenCall Stack (most recent call first):  plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)

继续安装依赖包

 yum install glibc-devel rpcgen -y

直至build完成

图片

2.3  进行编译及安装

开始make进行编译,为了加快点速度,我启用2个核心进行编译

make -j 2

图片

编译过程中出现新问题​​​​​​​

/usr/include/rpc/rpc.h:38:10: fatal error: rpc/types.h: No such file or directory   38 | #include <rpc/types.h>          /* some typedefs */      |          ^~~~~~~~~~~~~compilation terminated.make[2]: *** [plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/build.make:99: plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/src/bindings/xcom/xcom/pax_msg.cc.o] Error 1make[1]: *** [CMakeFiles/Makefile2:14468: plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/all] Error 2make[1]: *** Waiting for unfinished jobs....[ 14%] Built target oci_common_objlibmake: *** [Makefile:166: all] Error 2

图片

主要是前面的rpc依赖处理所致,因此将rpc目录下所有文件都拷贝进来​​​​​​​

cp  -rp  /usr/local/mysql-8.0.40/extra/tirpc/libtirpc-1.3.5/tirpc/rpc  /usr/include/rpcIn file included from /usr/include/rpc/rpc.h:38,                 from /usr/local/mysql-8.0.40/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/pax_msg.cc:28:/usr/include/rpc/types.h:98:10: fatal error: netconfig.h: No such file or directory   98 | #include <netconfig.h>      |          ^~~~~~~~~~~~~compilation terminated.make[2]: *** [plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/build.make:99: plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/src/bindings/xcom/xcom/pax_msg.cc.o] Error 1make[1]: *** [CMakeFiles/Makefile2:14468: plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/all] Error 2make[1]: *** Waiting for unfinished jobs....[ 15%] Linking CXX static library librpl_channel_credentials_lib.a[ 15%] Built target rpl_channel_credentials_libmake: *** [Makefile:166: all] Error 2

图片

继续复制依赖文件​​​​​​​

图片

完成后顺利进行编译。出现如下信息:

图片

继续进行make  install

make  install

完成后结果如下

图片

编译后MySQL内容如下

图片

图片

3. 安装数据库

创建数据库相关目录及配置文件

 mkdir -p /data/mysql/mysql3306/{data,logs,tmp,etc}

配置文件按需添加放在etc/my.cnf中

创建mysql用户并将数据库目录授权​​​​​​​

useradd  mysqlchown -R mysql:mysql /data/mysql/

初始化数据库

cd /usr/local/mysqlbin/mysqld --defaults-file=/data/mysql/mysql3306/etc/my.cnf   --initialize  --user=mysql

如果无异常,则在数据库日志中可以查看初始化的root@localhost账号密码

登录数据库并修改密码

图片

4.  补充部分依赖安装问题

4.1 cmake3

centos7系统中cmake预装版本较低,而编译8.0.40时需要更cmake3版本,如果无法通过yum install安装时,需要自己下载安装包进行安装

例如我在Centos7系统上用的3.15.5版本,可以通过如下命令下载

wget https://down.24kplus.com/linux/cmake/cmake-3.15.5.tar.gz

再解压、编译、安装即可

 wget https://down.24kplus.com/linux/cmake/cmake-3.15.5.tar.gz  tar -zxvf cmake-3.15.5.tar.gz   cd cmake-3.15.5 ./bootstrap --prefix=/usr --datadir=share/cmake --docdir=doc/cmake && make  make install
完成后检查cmake版本

图片

4.2  gcc

对于gcc版本,MySQL8.0.40之前gcc11即可,8.0.40版本开始需要gcc12,如果可以yum方式直接安装比较方便,如果不能则需要临时调整到高版本yum源进行安装或下载安装包进行安装。本次使用的调整yum源的方式,步骤如下:​​​​​​​

yum install scl-utilsyum install centos-release-scl centos-release-scl-rh

修改配置文件

vim /etc/yum.repos.d/CentOS-SCLo-scl.repo

添加如下内容

[centos-sclo-sclo]name=CentOS-7 - SCLo sclobaseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/sclo/$basearch/sclo/gpgcheck=1enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-sclo-testing]name=CentOS-7 - SCLo sclo Testingbaseurl=http://buildlogs.centos.org/centos/7/sclo/$basearch/sclo/gpgcheck=0enabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-sclo-source]name=CentOS-7 - SCLo sclo Sourcesbaseurl=http://vault.centos.org/centos/7/sclo/Source/sclo/gpgcheck=1enabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-sclo-debuginfo]name=CentOS-7 - SCLo sclo Debuginfobaseurl=http://debuginfo.centos.org/centos/7/sclo/$basearch/gpgcheck=1enabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

再添加repo文件

vim /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo

添加如下内容

# CentOS-SCLo-rh.repo## Please see http://wiki.centos.org/SpecialInterestGroup/SCLo for more# information
[centos-sclo-rh]name=CentOS-7 - SCLo rhbaseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/sclo/$basearch/rh/# mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-rhgpgcheck=1enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-rh-testing]name=CentOS-7 - SCLo rh Testingbaseurl=http://buildlogs.centos.org/centos/7/sclo/$basearch/rh/gpgcheck=0enabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-rh-source]name=CentOS-7 - SCLo rh Sourcesbaseurl=http://vault.centos.org/centos/7/sclo/Source/rh/gpgcheck=1enabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-rh-debuginfo]name=CentOS-7 - SCLo rh Debuginfobaseurl=http://debuginfo.centos.org/centos/7/sclo/$basearch/gpgcheck=1enabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

重建yum元数据缓存​​​​​​​

yum clean allyum makecache

安装gcc g++​​​​​​​

yum install devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils -y

4.3 libtirpc-devel

由于在Roky9上直接yum方式无libtirpc-devel包,因此手动下载安装包进行安装。需要用和libtirpc版本一致的,如果不一致,则缺少依赖。因此我直接将2个包都下载并安装

wget http://rpmfind.net/linux/centos-stream/9-stream/BaseOS/x86_64/os/Packages/libtirpc-1.3.3-9.el9.x86_64.rpmwget https://mirrors.tuna.tsinghua.edu.cn/centos-stream/9-stream/CRB/x86_64/os/Packages/libtirpc-devel-1.3.3-6.el9.x86_64.rpm
再本地安装​​​​​​​
yum  localinstall libtirpc-1.3.3-9.el9.x86_64.rpmyum localinstall -y  libtirpc-devel-1.3.3-9.el9.x86_64.rpm

4.4 重新构建及编译

由于我在构建和编译过程中有的包不存在或版本不对应,因此进行过一次重编译,及cmake时添加fresh选项

cmake --fresh -DINSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/data/mysql/mysql3306/data \-DMYSQL_UNIX_ADDR=/data/mysql/mysql3306/tmp/mysql.sock \-DMYSQL_TCP_PORT=3306 \-DWITH_INNODB_STORAGE_ENGINE=1 -DWITH_EXTRA_CHARSETS=all \-DFORCE_INSPECT=1 \-DCONNECT_WITH_SYSTEMD=OFF \-DDEFAULT_CHARSET=utf8mb4 \-DDEFAULT_COLLATION=utf8mb4_unicode_ci \-DWITH_BOOST=/usr/local/mysql-8.0.40/boost/boost_1_77_0  \-DENABLE_DOWNLOADS=1  \-DFORCE_INSOURCE_BUILD=1​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/75951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中pyside6多个py文件生成exe

网上见到的教程大多数都是pyinstaller安装单个py文件,针对多个py文件的打包,鲜有人提及;有也是部分全而多的解释,让人目不暇接,本次记录自己设置一个声波捕捉界面的打包过程。 1.pycharm中调用pyinstaller打包 参考链接:https://blog.csdn.net/weixin_45793544/articl…

Java中使用Function Call实现AI大模型与业务系统的集成​

这个理念实际上很早就出现了&#xff0c;只不过早期的模型推理理解能力比较差&#xff0c;用户理解深度预测不够&#xff0c;现在每天的迭代有了改进&#xff0c;逐步引入到我们本身的业务系统&#xff0c;让AI大模型集成进来管理自身业务功能。当然现在也不是一个什么难事了。…

id 属性自动创建 js 全局变量

给一个元素设置 id 属性&#xff0c;它会在 js 中创建全局变量&#xff0c;如 <div class"test" click"test" id"idTest">test</div>test() {console.log(idTest:, window.idTest) }.test {height: 50px;width: 200px;background-c…

Android SELinux权限使用

Android SELinux权限使用 一、SELinux开关 adb在线修改seLinux(也可以改配置文件彻底关闭) $ getenforce; //获取当前seLinux状态,Enforcing(表示已打开),Permissive(表示已关闭) $ setenforce 1; //打开seLinux $ setenforce 0; //关闭seLinux二、命令查看sel…

【R语言绘图】圈图绘制代码

绘制代码 rm(list ls())# 加载必要包 library(data.table) library(circlize) library(ComplexHeatmap) library(rtracklayer) library(GenomicRanges) library(BSgenome) library(GenomicFeatures) library(dplyr)### 数据准备阶段 ### # 1. 读取染色体长度信息 df <- re…

vim 编辑器 使用教程

Vim是一款强大的文本&#xff08;代码&#xff09;编辑器&#xff0c;它是由Bram Moolenaar于1991年开发完成。它的前身是Bill Joy开发的vi。名字的意义是Vi IMproved。 打开vim&#xff0c;直接在命令行输入vim即可&#xff0c;或者vim <filename>. Vim分为四种模式&a…

C++20新增内容

C20 是 C 语言的一次重大更新&#xff0c;它引入了许多新特性&#xff0c;使代码更现代化、简洁且高效。以下是 C20 的主要新增内容&#xff1a; 1. 概念&#xff08;Concepts&#xff09; 概念用于约束模板参数&#xff0c;使模板编程更加直观和安全。 #include <concept…

C++中常用的十大排序方法之4——希尔排序

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C中常用的排序方法之4——希尔排序的相…

详细描述以太坊的gas、gaslimit、gasPrice

目录 一、Gas 是什么? ✅ 简要定义: 🧠 举例理解: 二、Gas Limit 是什么? ✅ 简要定义: 分两种: 举例说明: 三、Gas Price 是什么? ✅ 简要定义: 为什么它重要? 示例: 四、 EIP-1559 后的新机制(伦敦升级) 三个要素: 五、额外技巧(开发实用) 本文…

全国大学生数学建模竞赛赛题深度分析报告(2010-2024)

全国大学生数学建模竞赛赛题深度分析报告&#xff08;2010-2024&#xff09; 全国大学生数学建模竞赛(CUMCM)是中国最具影响力的大学生科技竞赛之一&#xff0c;本报告将对2010-2024年间的赛题进行全面统计分析&#xff0c;包括题目类型、领域分布、模型方法等多个维度&#x…

从奖励到最优决策:动作价值函数与价值学习

从奖励到最优决策&#xff1a;动作价值函数与价值学习 价值学习一、动作价值函数对 U t U_t Ut​求期望得到动作价值函数动作价值函数的意义最优动作价值函数(Optimal Action-Value Function)如何理解 Q ∗ Q^* Q∗函数 二、价值学习的基本思想Deep Q-Network(DQN)DQN玩游戏的具…

智能手表该存什么音频和文本?场景化存储指南

文章目录 为什么需要“场景化存储”&#xff1f;智能手表的定位手机替代不了的场景碎片化的场景存储 音频篇&#xff1a;智能手表该存什么音乐和音频&#xff1f;运动场景通勤场景健康场景 文本篇&#xff1a;哪些文字信息值得放进手表&#xff1f;&#xff08;部分情况可使用图…

液态神经网络技术指南

一、引言 1.从传统神经网络到液态神经网络 神经网络作为深度学习的核心工具&#xff0c;在图像识别、自然语言处理、推荐系统等领域取得了巨大成功。尤其是卷积神经网络&#xff08;CNN&#xff09;、循环神经网络&#xff08;RNN&#xff09;、长短期记忆网络&#xff08;LS…

hive通过元数据库删除分区操作步骤

删除分区失败&#xff1a; alter table proj_60_finance.dwd_fm_ma_kpi_di_mm drop partition(year2025,month0-3,typeADJ); 1、查询分区的DB_ID、TBL_ID – 获取数据库ID-26110 SELECT DB_ID FROM DBS WHERE NAME ‘proj_60_finance’; – 获取表ID-307194 SELECT TBL_ID FR…

1990-2019年各地级市GDP数据

1990-2019年各地级市GDP数据 1、时间&#xff1a;1990-2019年 2、来源&#xff1a;城市年鉴 3、指标&#xff1a;行政区划代码、年份、省份、城市、经度、纬度、地区生产总值(万元) 4、范围&#xff1a;250地级市 5、指标解释&#xff1a;地区生产总值&#xff08;Gross R…

沧州铁狮子

又名“镇海吼”&#xff0c;是中国现存年代最久、形体最大的铸铁狮子&#xff0c;具有深厚的历史文化底蕴和独特的艺术价值。以下是关于沧州铁狮子的详细介绍&#xff1a; 历史背景 • 铸造年代&#xff1a;沧州铁狮子铸造于后周广顺三年&#xff08;953年&#xff09;&#…

《Java八股文の文艺复兴》第十一篇:量子永生架构——对象池的混沌边缘(终极试炼·完全体)

Tags: - Java高并发 - 量子架构 - 混沌工程 - 赛博修真 - 三体防御 目录&#xff1a; 卷首语&#xff1a;蝴蝶振翅引发的量子海啸 第一章&#xff1a;混沌初开——对象池的量子涅槃&#xff08;深度扩展&#xff09; 第二章&#xff1a;混沌计算——对象复活的降维打击&…

Java面试34-Kafka的零拷贝原理

在实际应用中&#xff0c;如果我们需要把磁盘中的某个文件内容发送到远程服务器上&#xff0c;那么它必须要经过几个拷贝的过程&#xff1a; 从磁盘中读取目标文件内容拷贝到内核缓冲区CPU控制器再把内核缓冲区的数据复制到用户空间的缓冲区在应用程序中&#xff0c;调用write…

TF-IDF忽略词序问题思考

自从开始做自然语言处理的业务&#xff0c;TF-IDF就是使用很频繁的文本特征技术&#xff0c;他的优点很多&#xff0c;比如&#xff1a;容易理解&#xff0c;不需要训练&#xff0c;提取效果好&#xff0c;可以给予大规模数据使用&#xff0c;总之用的很顺手&#xff0c;但是人…

SQL122 删除索引

alter table examination_info drop index uniq_idx_exam_id; alter table examination_info drop index full_idx_tag; 描述 请删除examination_info表上的唯一索引uniq_idx_exam_id和全文索引full_idx_tag。 后台会通过 SHOW INDEX FROM examination_info 来对比输出结果。…