MySQL5.7.44编译安装

前言

本次编译安装的是MySQL5.7.44的版本,是在centos stream 9中安装,且服务器上已经运行了一个使用rpm包安装的MySQL8.0.37,故在配置的过程中要注意路径和环境变量的冲突。默认MySQL8.0.37的数据目录在/val/lib/mysql,安装目录在/usr/bin,配置文件在/etc/my.cnf下。因此我们把MySQL5.7.44的安装目录放在/usr/local/mysql5.7.44,数据目录放在/home/mysql5.7.44/data,配置文件在/home/mysql5.7.44/my.cnf。ok,下面我们开始配置

1、为了安全在安装之前,我们创建一个单独的用户用来运行MySQL,
复制代码
groupadd mysql5
useradd -g mysql5 -d /home/mysql5.7.44  mysql5
2、接下来在官网下载源码包,Product Version选择需要的版本,Operating System选择Source Code,OS Version选择All,

https://downloads.mysql.com/archives/community/

然后选择mysql-5.7.44.tar.gz下载,可以直接使用wget下载到服务器上,或者下载到本地然后上传到服务器
复制代码
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44.tar.gz
下一步操作解压
3、下一步进行编译,但是为了保持源码目录的清洁,我们在这里创建一个单独的目录用来编译
复制代码
cd mysql-5.7.44
mkdir build
cd build
配置编译选项
复制代码
cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.7.44 \
-DMYSQL_DATADIR=/home/mysql5.7.44/data \
-DSYSCONFDIR=/home/mysql5.7.44/my.cnf \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.7.44

  • 作用:指定 MySQL 的安装路径。
  • 是否必要:必要。如果不指定,默认安装路径通常是 /usr/local/mysql,但指定路径可以避免冲突。

-DMYSQL_DATADIR=/home/mysql5.7.44/data

  • 作用:指定 MySQL 数据目录的路径。
  • 是否必要:必要。如果不指定,默认路径通常是 /usr/local/mysql/data,但指定路径可以避免冲突。

-DSYSCONFDIR=/home/mysql5.7.44/my.cnf

  • 作用:指定 MySQL 配置文件的路径。
  • 是否必要:可能不必要。默认配置文件路径通常是 /etc/mysql/my.cnf 或 /etc/my.cnf。如果你希望将配置文件放在非标准路径,这个选项是必要的。

-DWITH_INNOBASE_STORAGE_ENGINE=1

  • 作用:启用 InnoDB 存储引擎。
  • 是否必要:通常必要。InnoDB 是 MySQL 的默认存储引擎,大多数生产环境中都需要它。

-DENABLED_LOCAL_INFILE=1

  • 作用:启用本地文件加载功能(LOAD DATA LOCAL INFILE)。
  • 是否必要:根据需求决定。如果你需要从本地文件加载数据,这个选项是必要的。否则,可以省略以提高安全性。
这里cmake的时候出现了报错,提示需要boost_1_59_0,正常来说,MySQL 的源码包 mysql-5.7.44.tar.gz 不应该依赖于 Boost 库,为什么这里会报错呢,嗯... 先解决问题吧,既然缺少了boost_1_59_0那就安装一个吧
还是老规矩,直接使用wget下载,然后解压安装, ./b2 install执行时间会比较久,请耐心等待
复制代码
wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
tar -xzvf boost_1_59_0.tar.gz
cd boost_1_59_0
./bootstrap.sh
./b2 install
boost_1_59_0安装完成,并清理build下的缓存,然后再次尝试cmake,这里又发现有缺少了rpc.h头文件
这个rpc.h头文件需要安装libtirpc-devel来解决,由于我使用的操作系统是CentOS Stream 9,而libtirpc-devel不在默认的仓库中这里yum安装之前需要先启动CRB仓库,
复制代码
dnf config-manager --set-enabled crb
yum install -y libtirpc-devel
清理build的缓存,然后继续重试cmake。呃...又遇到报错了,缺少了rpcgen,
这里我直接使用了yum安装,如果这里yum安装失败可以考虑下载rpcgen的源码包然后编译安装,或者配置yum仓库后再yum安装,ok没问题后,清理build的缓存后重新cmake

嗯,到这里就没有问题了,使用cmake 已经可以成功了,不会再遇到致命错误...

4、下一步进行编译,使用make -j$(nproc) 或者make都可以
复制代码
make -j$(nproc)  /  make
5、最后进行安装
复制代码
 make install
6、在/root/.bashrc中配置环境变量,
复制代码
export PATH=$PATH:/usr/local/mysql5.7.44/bin
source /root/.bashrc
7、配置/home/mysql5.7.44/my.cnf MySQL5.7.44的配置文件
复制代码
[mysqld]
user = mysql5
port = 3303
basedir = /usr/local/mysql5.7.44
datadir = /home/mysql5.7.44/data
socket = /home/mysql5.7.44/data/mysql.sock
character-set-server = UTF8
lower_case_table_names = 1
log-error = /home/mysql5.7.44/error.log

[client]
socket = /home/mysql5.7.44/data/mysql.sock
8、初始化MySQL数据目录,初始化生成的密码可以在指定的error.log 中查看
复制代码
/usr/local/mysql5.7.44/bin/mysqld  --defaults-file=/home/mysql5.7.44/my.cnf --initialize
9、启动MySQL,可以看到/usr/local/mysql5.7.44/bin/mysqld 已经启动,3303端口已运行
复制代码
/usr/local/mysql5.7.44/bin/mysqld  --defaults-file=/home/mysql5.7.44/my.cnf &
10、更新密码并测试连接
复制代码
/usr/local/mysql5.7.44/bin/mysqladmin -u root -p'R1uJLjcP4w#)'  --socket /home/mysql5.7.44/data/mysql.sock password '123456'
/usr/local/mysql5.7.44/bin/mysql -u root -p'R1uJLjcP4w#)'  --socket /home/mysql5.7.44/data/mysql.sock
总结

在配置的过程中,遇到的最大的问题就是在cmake的时候,由于缺少依赖导致cmake中断,本次配置中缺少的依赖主要就是下面3个比较难搞一点,其他的直接使用yum安装就可以了,解决方法已经在文章中,大家可以借鉴

  • boost_1_59_0
  • rpc.h头文件
  • rpcgen
相关推荐
余槐i7 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
数据库小学妹8 小时前
PostgreSQL表膨胀怎么办?autovacuum清不动的根因与排查命令
数据库·postgresql·表膨胀·mvcc·数据库运维
mister_guo8 小时前
MySQL-1267错误:排序规则冲突的原因与解决方案
数据库·mysql
骇客野人8 小时前
在麒麟操作系统上 分别安装 jdk1.8, 达梦数据库,redis ,memcache 的操作实施方案和步骤
数据库·redis·memcached
美狐美颜SDK开放平台10 小时前
直播APP如何实现美白滤镜功能?视频美颜SDK技术开发方案详解
前端·数据库·人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk
Lost_the_wind10 小时前
MySQL学习笔记五
mysql
花间相见11 小时前
【计算基础|MySQL01】【上手】安装连接、数据类型与建库建表
数据库·后端
花间相见11 小时前
【计算基础|MySQL02】【上手】SQL 增删改查
数据库·后端
ITxiaobing202312 小时前
IP 库与 AppsFlyer 国家/地区数据不一致,如何系统地对账?
数据库·网络协议·tcp/ip
这个DBA有点耶12 小时前
从时间到语义:时序数据库与向量数据库的核心机制、选型与多模融合趋势
数据库·mysql·架构