源码编译安装MySQL-8.0.26

安装先决条件

  • 从源代码安装MySQL需要几种开发工具。要从源代码安装MySQL,无论安装方法如何,都必须满足以下系统要求:
    • CMake:用作所有平台上的构建框架。CMake的重要特性之一是其独立于源码的编译,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译。
    • 使用 make 3.75 或更高版本。
    • 从MySQL 8.0.27开始,支持允许使用C++17功能。
      • Linux:GCC 7.1 or Clang 5.
    • MySQL C API需要C++或C99编译器才能编译。
    • 需要SSL库来支持加密连接、随机数生成以及其他加密相关的操作。默认情况下,构建使用安装在主机系统上的OpenSSL库,若需要更改,使用CMake是指定 ‘WITH_SSL’ 选项。

环境信息

  • 目前服务器关闭防火墙、Selinux,时间进行同步。
操作系统主机IP角色安装组件
Rocky 8.6172.25.1.13单机MySQ源码编译

源码编译安装

下载并解压缩源码包

[root@localhost ~]# wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.26.tar.gz
[root@localhost ~]# yum -y install tar
[root@localhost ~]# tar -xf mysql-8.0.26.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src
[root@localhost src]# ls
debug  kernels  mysql-8.0.26

安装相关依赖

[root@localhost bld]# wget https://vault.centos.org/centos/8/PowerTools/x86_64/os/Packages/bison-devel-3.0.4-10.el8.x86_64.rpm
[root@localhost ~]# yum -y install gcc gcc-c++ cmake \
bison bison-devel zlib-devel \
libcurl-devel libarchive-devel boost-devel \
ncurses-devel gnutls-devel libxml2-devel \
openssl-devel libevent-devel libaio-devel \
perl-Data-Dumper libtirpc-devel

准备用户和数据目录

[root@localhost ~]# useradd -r -s /sbin/nologin -d /data/mysql mysql
[root@localhost bld]# mkdir -p /data/mysql
[root@localhost bld]# chown mysql.mysql /data/mysql

源码编译安装MySQL

## 创建一个构建源代码树的目录
[root@localhost src]# cd mysql-8.0.26/

## 进行CMake 构建编译
[root@localhost mysql-8.0.26]# cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql8.0.26 \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \    ##静态编译存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \    ##关闭调试
-DWITH_READLINE=1 \
-DWITH_SSL=system \   ##支持加密连接,'system'表示使用系统SSL库,或者指定路径
-DWITH_ZLIB=system \  ##压缩库
-DWITH_LIBWRAP=0 \    ##是否包括对网络语言(TCP 包装器)的支持
-DENABLED_LOCAL_INFILE=1 \   ## 是否启用本地加载数据
-DMYSQL_UNIX_ADDR=/data/mysql.sock \  ##服务器监听套接字连接路径,默认'/tmp/mysql.sock'
-DCMAKE_C_COMPILER=/usr/bin/gcc \
-DCMAKE_CXX_COMPILER=/usr/bin/g++ \
-DFORCE_INSOURCE_BUILD=1 \
-DDOWNLOAD_BOOST=1 \    ##开启BOOST下载
-DWITH_BOOST=/usr/src   ##BOOST下载保存路径

[root@localhost mysql-8.0.26]# make -j $(grep -ic process /proc/cpuinfo) && make install
  • 其他参数
-DDEFAULT_CHARSET=utf8mb4 \   ##服务器字符集,默认情况下'utf8mb4',最好默认
-DDEFAULT_COLLATION=utf8_general_ci   ##排序规则,默认utf8mb4_0900_ai_ci,可以使用'SHOW COLLATION' 来进行查询。

错误问题

CMake编译出现’CMAKE_C_COMPILER and CMAKE_CXX_COMPILER’

[root@localhost bld]# cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_MROONGA_STORAGE_ENGINE=1 -DWITH_DEBUG=0 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DENABLED_LOCAL_INFILE=1 -DMYSQL_UNIX_ADDR=/data/mysql.sock
-- Running cmake version 3.20.2
-- Could NOT find Git (missing: GIT_EXECUTABLE) 
CMake Deprecation Warning at cmake/cmake_policies.cmake:59 (CMAKE_POLICY):
  The OLD behavior for policy CMP0073 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.
Call Stack (most recent call first):
  CMakeLists.txt:234 (INCLUDE)


-- This is .el8. as found from 'rpm -qf /'
-- Looking for a devtoolset compiler
CMake Warning at CMakeLists.txt:313 (MESSAGE):
  Could not find devtoolset compiler in /opt/rh/gcc-toolset-10


CMake Error at CMakeLists.txt:315 (MESSAGE):
  Please set CMAKE_C_COMPILER and CMAKE_CXX_COMPILER explicitly.


-- Configuring incomplete, errors occurred!

  • 解决办法
## 在编译时加入如下指令
cmake . \
-DCMAKE_C_COMPILER=/usr/bin/gcc \
-DCMAKE_CXX_COMPILER=/usr/bin/g++

CMake编译出现’cmake/boost.cmake:107’

CMake Error at cmake/boost.cmake:107 (MESSAGE):
  You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>

  This CMake script will look for boost in <directory>.  If it is not there,
  it will download and unpack it (in that directory) for you.

  You can also download boost manually, from
  https://boostorg.jfrog.io/artifactory/main/release/1.73.0/source/boost_1_73_0.tar.gz


  If you are inside a firewall, you may need to use an https proxy:

  export https_proxy=http://example.com:80

Call Stack (most recent call first):
  cmake/boost.cmake:307 (COULD_NOT_FIND_BOOST)
  CMakeLists.txt:1284 (INCLUDE)


-- Configuring incomplete, errors occurred!
See also "/usr/src/mysql-8.0.26/CMakeFiles/CMakeOutput.log".
See also "/usr/src/mysql-8.0.26/CMakeFiles/CMakeError.log".

  • 解决办法
cmake . \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/src

CMake编译出现’cmake/rpc.cmake:29’

CMake Warning at cmake/rpc.cmake:29 (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:104 (WARN_MISSING_RPCGEN_EXECUTABLE)
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:53 (INCLUDE)


CMake Error at plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:105 (MESSAGE):
  Could not find rpcgen
Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:53 (INCLUDE)


-- Configuring incomplete, errors occurred!

  • 解决办法
[root@src-mysql ~]# wget https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4.2/rpcsvc-proto-1.4.2.tar.xz
[root@src-mysql ~]# tar -xf rpcsvc-proto-1.4.2.tar.xz
[root@src-mysql ~]# cd rpcsvc-proto-1.4.2
[root@src-mysql rpcsvc-proto-1.4.2]# ./configure
[root@src-mysql rpcsvc-proto-1.4.2]# make -j $(grep -ic process /proc/cpuinfo) && make install
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值