下面给你一份 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 |
+-----------+