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

相关推荐
消失的旧时光-194316 分钟前
Linux 入门核心命令清单(工程版)
linux·运维·服务器
艾莉丝努力练剑23 分钟前
【Linux:文件】Ext系列文件系统(初阶)
大数据·linux·运维·服务器·c++·人工智能·算法
Trouvaille ~1 小时前
【Linux】TCP Socket编程实战(一):API详解与单连接Echo Server
linux·运维·服务器·网络·c++·tcp/ip·socket
旖旎夜光1 小时前
Linux(13)(中)
linux·网络
威迪斯特2 小时前
CentOS图形化操作界面:理论解析与实践指南
linux·运维·centos·组件·图形化·桌面·xserver
一方热衷.2 小时前
在线安装对应版本NVIDIA驱动
linux·运维·服务器
独自归家的兔2 小时前
ubuntu系统安装dbswitch教程 - 备份本地数据到远程服务器
linux·运维·ubuntu
ONE_SIX_MIX2 小时前
ubuntu 24.04 用rdp连接,桌面黑屏问题,解决
linux·运维·ubuntu
龙飞052 小时前
Systemd -systemctl - journalctl 速查表:服务管理 + 日志排障
linux·运维·前端·chrome·systemctl·journalctl
*小海豚*2 小时前
在linux服务器上DNS正常,但是java应用调用第三方解析域名报错
java·linux·服务器