MySQL 8.0.39 Rocky Linux 一键安装脚本(完整可直接运行)

下面给你一份 Rocky Linux 8/9 通用的 MySQL 8.0.39 一键安装脚本(含 root 初始化密码处理)

支持:

✔ 自动配置官方 MySQL Yum 源

✔ 自动安装指定版本 8.0.39

✔ 自动生成 my.cnf

✔ 自动初始化数据库

✔ 自动读取临时密码并更新为新密码

✔ 自动开启远程访问

✔ 全程无人工输入


MySQL 8.0.39 Rocky Linux 一键安装脚本(完整可直接运行)

保存为:install_mysql8039.sh

执行:chmod +x install_mysql8039.sh && ./install_mysql8039.sh

bash 复制代码
#!/bin/bash

MYSQL_VERSION="8.0.39"
MYSQL_RPM_URL="https://repo.mysql.com/mysql80-community-release-el9-1.noarch.rpm"
ROOT_NEW_PASS="Root@123456"

echo "============================"
echo " MySQL $MYSQL_VERSION Install Script"
echo "============================"

# 1. Remove old MySQL
echo "→ Removing old MySQL ..."
dnf -y remove mysql mysql-server mariadb* >/dev/null 2>&1

# 2. Install MySQL repo
echo "→ Installing MySQL Yum Repo ..."
dnf -y install ${MYSQL_RPM_URL}

# 3. Disable default MySQL module (Rocky Linux 自带 8.4)
echo "→ Disabling default MySQL module ..."
dnf -y module disable mysql

# 4. Install specific version
echo "→ Installing MySQL $MYSQL_VERSION ..."
dnf install -y mysql-community-server-$MYSQL_VERSION*

# 5. Generate my.cnf
echo "→ Writing /etc/my.cnf ..."
cat > /etc/my.cnf <<EOF
[client]
port=3306
socket=/var/lib/mysql/mysql.sock

[mysqld]
user=mysql
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
pid-file=/var/run/mysqld/mysqld.pid

character_set_server=utf8mb4
collation_server=utf8mb4_general_ci

max_connections=2000
default_authentication_plugin=mysql_native_password

log-error=/var/log/mysqld.log
EOF

# 6. Start MySQL
echo "→ Starting MySQL ..."
systemctl start mysqld
systemctl enable mysqld

sleep 2

# 7. Get temporary password
echo "→ Fetching temporary password ..."
TEMP_PASS=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')

if [ -z "$TEMP_PASS" ]; then
  echo "❌ ERROR: Cannot fetch temporary password from /var/log/mysqld.log"
  exit 1
fi

echo "✔ Temporary password: $TEMP_PASS"

# 8. Create SQL for password change + remote access
echo "→ Configuring MySQL ..."

cat > /tmp/mysql_secure.sql <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED BY '${ROOT_NEW_PASS}';
UNINSTALL COMPONENT 'file://component_validate_password';
UPDATE user SET host='%' WHERE user='root' AND host='localhost';
FLUSH PRIVILEGES;
EOF

# 9. Apply SQL
mysql --connect-expired-password -uroot -p"$TEMP_PASS" < /tmp/mysql_secure.sql

if [ $? -ne 0 ]; then
  echo "❌ ERROR: root password update failed!"
  exit 1
fi

echo "✔ MySQL root password updated"
echo "✔ New password: $ROOT_NEW_PASS"

# 10. Restart MySQL
systemctl restart mysqld

echo ""
echo "======================================"
echo " MySQL $MYSQL_VERSION Installed SUCCESS"
echo "======================================"
echo "Login:"
echo "  mysql -u root -p${ROOT_NEW_PASS}"
echo "Data dir: /var/lib/mysql"
echo "Config:   /etc/my.cnf"
echo "======================================"

📌 脚本执行后的结果

内容 状态
MySQL 8.0.39 成功安装
root 初始密码自动获取
自动修改密码为Root@123456
自动关闭密码复杂度插件
自动开启远程访问 root
自动写入 my.cnf(utf8mb4)
自动开机自启

🧪 安装完成验证

bash 复制代码
mysql -uroot -pRoot@123456 -e "select version();"

输出应该为:

复制代码
+-----------+
| version() |
+-----------+
| 8.0.39    |
+-----------+

相关推荐
Zenova EdgeOS8 分钟前
Linux dmesg 工业边缘实战:内核日志过滤、持久化与故障定位
linux·运维·边缘计算·工业边缘·dmesg·内核日志
金士顿20 分钟前
System.Text.Json Source Generator 深度解析:为什么 Native AOT 不喜欢反射
linux·asp.net core·arm64·net·native aot
做运维的阿瑞1 小时前
Python 标准库汇总:分类速览与常用模块清单
linux·运维·python
百万蹄蹄向前冲2 小时前
密码都对Node.js却连不上Linux数据库
linux·mysql
彧azz2 小时前
Linux 网络编程学习总结
linux·网络·笔记·学习·面试
华章酱2 小时前
MySQL幻读是怎么出现的
数据库·mysql·幻读
浅念-2 小时前
Redis基础详解:单线程模型、String与Hash数据结构
服务器·数据库·redis·sql·mysql·nosql数据库·nosql
aramae2 小时前
MySQL内置函数(7)
开发语言·笔记·后端·mysql·其他
susplus3 小时前
【ARM 裸机开发 (IMX6ULL-mini)】GNU工具、Makefile 工程构建、链接脚本详解|C 语言点灯 + 蜂鸣器驱动
linux·arm·makefile·imx6ull
Shadow(⊙o⊙)3 小时前
Linux进阶知识1.0
linux·运维·服务器