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

相关推荐
AI逐月21 小时前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
小白跃升坊1 天前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey1 天前
【Linux】线程同步与互斥
linux·笔记
舰长1151 天前
linux 实现文件共享的实现方式比较
linux·服务器·网络
zmjjdank1ng1 天前
Linux 输出重定向
linux·运维
路由侠内网穿透.1 天前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
VekiSon1 天前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
zl_dfq1 天前
Linux 之 【进程信号】(signal、kill、raise、abort、alarm、Core Dump核心转储机制)
linux
Ankie Wan1 天前
cgroup(Control Group)是 Linux 内核提供的一种机制,用来“控制、限制、隔离、统计”进程对系统资源的使用。
linux·容器·cgroup·lxc
skywalk81631 天前
尝试在openi启智社区的dcu环境安装ollama最新版0.15.2(失败)
linux·运维·服务器·ollama