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    |
+-----------+

相关推荐
Nerd Nirvana2 小时前
WSL——Windows Subsystem for Linux流程一览
linux·运维·服务器·windows·嵌入式·wsl·wsl2
木风小助理2 小时前
子查询与 JOIN 查询性能比较:执行机制与适用场景解析
数据库·sql·mysql
九章-2 小时前
智慧文旅信创落地新标杆:四川省文旅厅完成MySQL 5.7平滑替换,筑牢省级管理平台自主可控底座
数据库·mysql
蟹至之2 小时前
【MySQL】事务
数据库·mysql·事务
CS创新实验室2 小时前
计算机考研408【操作系统】核心知识点总结
java·linux·考研·计算机·操作系统·408
ao_lang3 小时前
数据库范式
数据库·mysql
木风小助理3 小时前
MySQL内存监控深度解析与故障排查实践
android·adb
bulucc3 小时前
vim 快捷操作
linux·编辑器·vim
子超兄3 小时前
MVCC机制简介
数据库·mysql