首先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、其他注意事项