当前位置: 首页 > news >正文

Rocky Linux 9.5中完美迁移mysql5.6.17到mysql5.7.11

首先Rocky Linux 9.5中,默认官方建议使用的是mysql8.0,项目要兼容以往数据,经过测试跟mysql5.7.11能做兼容。

一:工具准备以及安装步骤

1、官网下载地址:https://downloads.mysql.com/archives/community/

下载版本为:5.7.11

2、连接linux服务器,检查依赖包,执行对应的命令

rpm -qa|grep libaio

rpm -qa|grep net-tools

3、查找Mysql的MariaDB依赖,如果有,先删除了,确保安装mysql时是干净的环境

rpm -qa|grep mariadb

若是有,需要卸载

rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps,名称按服务器上对应的名称卸载

4、依次安装对应的mysql rpm包

rpm -ivh mysql-community-common-5.7.11-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-5.7.11-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-5.7.11-1.el7.x86_64.rpm 

rpm -ivh mysql-community-server-5.7.11-1.el7.x86_64.rpm

5、安装mysql-community-client-5.7.11-1.el7.x86_64.rpm过程中会出现报错,报错内容如下:

erro:libncurses.so.5()(64bit) is needed。

使用命令安装对应的依赖包

yum install libncurses*

备注:mysql安装包依次,按顺序安装!

6、启动mysql服务

systemctl start mysqld

systemctl stop mysqld

systemctl restart mysqld

二、启动mysqld如果报错排查

1、通过命令检查是否正常启动

systemctl status mysqld 或者使用 journalctl -u mysql.service --since "5 minutes ago"

2、检查数据目录权限

确保 MySQL 数据目录(默认 /var/lib/mysql)的权限正确:

chown -R mysql:mysql /var/lib/mysql

chmod 750 /var/lib/mysql

3、如果出现未能登录mysql,可以重新生产数据库表结构

# 停止 MySQL 服务
systemctl stop mysql

# 备份旧数据(可选,防止数据丢失)
mv /var/lib/mysql /var/lib/mysql.bak

# 重新初始化数据目录(不同 MySQL 版本命令不同)
# MySQL 5.7 及以下:
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

# MySQL 8.0+:
mysqld --initialize --user=mysql --datadir=/var/lib/mysql

验证修复

# 登录 MySQL(使用初始化后的临时密码)
mysql -u root -p

# 检查系统表是否存在
SHOW DATABASES;
USE mysql;
SHOW TABLES;  # 应看到 user、db 等表
数据目录已存在但损坏
# 尝试修复 InnoDB 表
mysqlcheck --all-databases --check-upgrade --auto-repair -u root -p

4、修改SELinux 权限问题

# 临时关闭 SELinux
setenforce 0

# 永久修复 SELinux 上下文
sudo semanage fcontext -a -t mysqld_db_t "/var/lib/mysql(/.*)?"
sudo restorecon -Rv /var/lib/mysql

5、若禁用 SELinux 后可以正常连接,你可以通过修改 SELinux 策略来允许 MySQL 访问

semanage port -a -t mysqld_port_t -p tcp 3306

三、修改对应配置信息

1、防火墙放行 3306 端口

# 添加 TCP 3306 端口规则
firewall-cmd --permanent --add-port=3306/tcp

# 重新加载防火墙配置
firewall-cmd --reload

# 验证规则是否生效
firewall-cmd --list-ports | grep 3306

2、修改配置文件 vi /etc/my.cnf 增加内容如下:

#skip-grant-tables
bind-address = 0.0.0.0  #允许所有 IP 访问

lower_case_table_names = 1

 

3、获取临时密码(若无密码)
grep 'temporary password' /var/log/mysql/mysql-error.log。这一步我没生效

# 登录并修改密码
/usr/local/mysql/bin/mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';
FLUSH PRIVILEGES;
exit;

4、检查端口信息

lsof -i :3306

5、开放所有的IP都能登录mysql

grant all PRIVILEGES on *.* to root@'%' identified by 'password';
FLUSH PRIVILEGES;

6、本地检查端口监听

ss -tulnp | grep 3306

7、检查防火墙状态

firewall-cmd --state
  • 如果返回 running,说明防火墙已启用。

  • 如果未启用,启动防火墙

    systemctl enable --now firewalld

 开放 8080 端口

# 添加 TCP 8080 端口规则
sudo firewall-cmd --permanent --add-port=8080/tcp

# 重新加载防火墙配置
sudo firewall-cmd --reload

# 验证规则是否生效
sudo firewall-cmd --list-ports | grep 8080

四、其他注意事项:

1、若你想不区分大小写地查找并直接删除当前目录下包含 “BootStrap” 的文件,可使用如下命令

find . -maxdepth 1 -type f -iname "*BootStrap*" -exec rm -f {} \;
命令解释
  • find:用于在文件系统中查找文件和目录。
  • .:表示从当前目录开始查找。
  • -type f:指定查找的对象为文件。
  • -iname "*BootStrap*"-iname 表示不区分大小写地匹配文件名,*BootStrap* 表示文件名中包含 "BootStrap" 字样。
  • -exec rm -f {} \;:对查找到的每个文件执行 rm -f 命令,{} 是 find 命令查找到的文件的占位符,\; 表示命令结束。

2、其他注意事项 

相关文章:

  • 20250330-傅里叶级数专题之离散时间傅里叶变换(4/6)
  • js 强引用 ​弱引用
  • leetcode 28 Find the Index of the First Occurrence in a String
  • uv vs pip 速度实测
  • ENSP学习day12
  • aws(学习笔记第三十七课) lambda调用rekognition(名人视频分析)
  • PHY——LAN8720A 寄存器读写 (二)
  • 前向扩散公式推导细节
  • Matlab自学笔记四十九:类型识别:判断数据的类型和类别
  • 2025/3/20 心得
  • HCIA—— 31 HTTP的报文、请求响应报文、方法、URI和URL
  • 【数据标准】数据标准化框架体系-基础类数据标准
  • 基于Real-Sim-Real循环框架的机器人策略迁移方法
  • react拖拽库dnd-kit
  • 【jQuery】插件
  • 【C++初阶】----模板初阶
  • Flask登录页面后点击按钮在远程CentOS上自动执行一条命令
  • 极速版:栈的内存/局部变量表/堆的内存细分
  • 从 select 到 epoll:拆解 I/O 多路复用的演进与实战
  • Teleport场景及原理
  • 柳市网站制作/seo优化方案报价
  • 聊城网站制作信息/网络营销公司网络推广
  • 个人如何建设网站/永久免费客服系统
  • 朔州市住房与城乡建设厅网站/公众号推广渠道
  • 网站上关键词的推广怎么做/网络服务主要包括什么
  • 做网站怎么导入地图/重庆网站seo诊断