RHEL8环境源码编译安装MySQL8.0

来源:这里教程网 时间:2026-03-01 18:22:33 作者:
作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验,
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝10万+
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理

文章目录

  • 前言
  • ???? 1.源码安装包下载
  • ???? 2.环境准备
  • ✨ 2.1 操作系统
  • ✨2.2.关闭防火墙
  • ✨2.3.selinux关闭
  • ✨2.4.Host解析配置
  • ✨2.5.卸载mariadb
  • ???? 3.配置yum安装依赖
  • ???? 4.源码安装
  • ✨4.1 安装报错处理
  • ???? 5.安装MySQL
  • ✨5.1 用户及组
  • ✨5.2 参数文件
  • ✨5.2 MySQL初始化
  • ✨5.4 环境变量设置
  • ???? 6.启动关闭
  • ???? 7.开机启动配置
  • ✨7.1 服务配置
  • ✨7.2 加载设置

    前言

    Linux源码安装MySQL在实际安装的操作系统进行可根据需要定制编译,最灵活,性能最好.


    ???? 1.源码安装包下载

    官网下载地址:https://dev.mysql.com/downloads/mysql/ 源码包下载选择Source Code,无需选择操作系统平台

    在这里插入图片描述

    ???? 2.环境准备

    安装任何数据库之前,操作系统环境准备至关重要,本次实操是基于RHEL8操作系统。源码安装对环境要求比较高,涉及部分系统内核的升级。

    ✨ 2.1 操作系统

    [root@jeames ~]# cat /etc/redhat-release Red Hat Enterprise Linux release 8.1 (Ootpa)

    ✨2.2.关闭防火墙

    查看防火墙是状态 [root@jeames ~]# systemctl status firewalld 关闭防火墙 [root@jeames ~]# systemctl stop firewalld 取消开机自启动 [root@jeames ~]# systemctl disable firewalld Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

    ✨2.3.selinux关闭

    修改参数文件/etc/sysconfig/selinux中SELINUX的值为disabled [root@jeames ~]# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config 修改完成后需要重启服务器才生效

    ✨2.4.Host解析配置

    [root@jeames ~]# hostnamejeames
    [root@jeames ~]# vi /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6#此处新增hostname与ip的对应192.168.6.10 jeames

    ✨2.5.卸载mariadb

    为了保证后续操作不会产生其他冲突,我们卸载部分操作系统自带原有的mariadb [root@jeames ~]# rpm -qa|grep mariadb [root@jeames ~]# rpm -qa|grep mariadb-libs|xargs rpm -e --nodeps

    ???? 3.配置yum安装依赖

    1.创建挂载路径
    [root@jeames ~]# mkdir -p /mnt/cdrom2.挂载系统镜像光盘到指定目录#因为光盘的格式通常是iso9660,意思是/dev/sr0挂载在/mnt/cdrom目录上[root@jeames ~]# mount -t iso9660 /dev/sr0 /mnt/cdrommount: /mnt/cdrom: WARNING: device write-protected, mounted read-only.
    3.修改yum源配置文件
    编辑rhel8-local.repo文件
    [root@jeames ~]# cd /etc/yum.repos.d[root@jeames yum.repos.d]# vi rhel8-local.repo[localREPO]
    name=localhost8
    baseurl=file:///mnt/cdrom/BaseOSenable=1
    gpgcheck=0
    [localREPO_APP]
    name=localhost8_app
    baseurl=file:///mnt/cdrom/AppStreamenable=1
    gpgcheck=0
    4.配置好后重建本地缓存
    yum clean all 
    yum makecache 
    yum repolist
    5.安装MySQL 8.0源码所需的依赖包
    [root@jeames ~]# yum -y install lrzsz wget perl-Digest-MD5[root@jeames ~]# yum -y install libaio#编译软件依赖[root@jeames ~]# yum -y install cmake gcc gcc-c++[root@jeames ~]# yum -y install git make[root@jeames ~]# yum install libtirpc-devel[root@jeames ~]# yum insatll rpcgen[root@jeames ~]# yum install libudev-devel[root@jeames ~]# yum install ncurses-devel#字符终端处理依赖[root@jeames ~]# yum install openssl openssl-devel ncurses注解:rpcgen需要手动下载安装包编译安装
    以下就是具体解决Mysql源码编译报错Could not find rpcgen的方法。
    rpcgen下载参考 https://github.com/thkukuk/rpcsvc-proto/releases
    xz -d rpcsvc-proto-1.4.4.tar.xz
    tar -xvf rpcsvc-proto-1.4.4.tarcd rpcsvc-proto-1.4.4
    ./configure
    make
    make install

    在这里插入图片描述

    ???? 4.源码安装

    1.解压软件包#创建软件目录[root@jeames ~]# mkdir -p /soft2.上传软件包#通过Xftp工具或者SecureCRT自带的Sftp上传软件包mysql-boost-8.0.27.tar.gz
    3.校验安装包
    [root@jeames ~]# cd /soft[root@jeames soft]# md5sum mysql-boost-8.0.27.tar.gz80310c5a1b24145fa072927ab99a4c0d  mysql-boost-8.0.27.tar.gz
    注:md5sum是linux下的shell命令,其功能是计算检验MD5效验码,
    是为了MySQL安装包是否损坏
    4.解压缩安装包
    [root@jeames soft]# tar -zxf mysql-boost-8.0.27.tar.gz5.编译安装#初始化[root@jeames soft]# cd mysql-8.0.27cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_DATADIR=/usr/local/mysql/data \
    -DSYSCONFDIR=/etc \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
    -DWITH_FEDERATED_STORAGE_ENGINE=1 \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    -DENABLED_LOCAL_INFILE=1 \
    -DENABLE_DTRACE=0 \
    -DDEFAULT_CHARSET=utf8mb4 \
    -DDEFAULT_COLLATION=utf8mb4_general_ci \
    -DWITH_EMBEDDED_SERVER=1 \
    -DDOWNLOAD_BOOST=1 \
    -DFORCE_INSOURCE_BUILD=1 \
    -DWITHOUT_PARTITION_STORAGE_ENGINE=0 \
    -DCMAKE_C_COMPILER=/usr/bin/gcc \
    -DCMAKE_CXX_COMPILER=/usr/bin/g++ \
    -DWITH_BOOST=/soft/mysql-8.0.27/boost#编译[root@jeames mysql-8.0.27]# make -j4#安装[root@jeames mysql-8.0.27]# make install

    ✨4.1 安装报错处理

    在这里插入图片描述

    查阅相关信息后,认为是虚拟机内存不足造成的。 通过创建swap分区解决了这个问题,编译成功。加到内存到8G ,SWAP交换区增加了4G即可 可以通过以下方法增大swap交换分区 dd if=/dev/zero of=/swapfile bs=1024 count=4194304 mkswap /swapfile swapon /swapfile swapon -s vim /etc/fstab /swapfile swap swap defaults 0 0 mount -a

    在这里插入图片描述 在这里插入图片描述

    ???? 5.安装MySQL

    ✨5.1 用户及组

    groupadd mysql useradd -g mysql mysql chown -R mysql:mysql /usr/local/mysql

    ✨5.2 参数文件

    cat > /etc/my.cnf <<“EOF” [mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data port=3306 server_id=80273306 log-bin skip-name-resolve character_set_server=utf8mb4 #default-time-zone = ‘+8:00’ log_timestamps = SYSTEM EOF

    ✨5.2 MySQL初始化

    /usr/local/mysql/bin/mysqld --initialize-insecure –basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

    ✨5.4 环境变量设置

    echo “export PATH=$PATH:/usr/local/mysql/bin” >> /root/.bashrc source /root/.bashrc

    在这里插入图片描述

    ???? 6.启动关闭

    启动MySQL: mysqld_safe & 登录MySQL,默认密码为空 : mysql -uroot -p 关闭MySQL mysqladmin -uroot -p shutdown

    在这里插入图片描述

    ???? 7.开机启动配置

    ✨7.1 服务配置

    vi /usr/lib/systemd/system/mysqld.service##加入以下内容即可[Unit]
    Description=Mysql server
    After=network.target
     
    [Install]
    WantedBy=multi-user.target
     
    [Service]
    User=mysql
    Group=mysql
    ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize $OPTIONSExecReload=/bin/kill -HUP $MAINPID  ExecStop=/bin/kill -s QUIT $MAINPID 
     KillMode=process
    LimitNOFILE=65535
    Restart=on-failure
    RestartSec=10
    RestartPreventExitStatus=1
    PrivateTmp=false

    ✨7.2 加载设置

    systemctl daemon-reload systemctl stop mysqld systemctl enable mysqld

    systemctl status mysqld systemctl start mysqld systemctl enable mysqld 在这里插入图片描述

  • 相关推荐