CentOS Stream 9 专用 • MySQL 8.4.9 .tar.xz 压缩包全自动安装脚本
- 纯离线通用包安装
- 自动初始化、自动改密码、自动开远程
- 自动加 systemd 开机自启
- 无交互,复制直接跑
#!/bin/bash
set -euo pipefail
# ==================== 配置项 ====================
MYSQL_VERSION="8.4.9"
MYSQL_PACKAGE="mysql-${MYSQL_VERSION}-linux-glibc2.28-x86_64"
MYSQL_TAR="${MYSQL_PACKAGE}.tar.xz"
DOWNLOAD_URL="https://cdn.mysql.com/Downloads/MySQL-8.4/${MYSQL_TAR}"
INSTALL_DIR="/usr/local/mysql"
DATA_DIR="/data/mysql"
MYSQL_CNF="/etc/my.cnf"
# root 密码(自行修改)
ROOT_PWD="Root@123456"
# =================================================
echo -e "\\033[32m===== 安装依赖 =====\\033[0m"
dnf install -y libaio-devel numactl openssl-devel
echo -e "\\033[32m===== 下载 MySQL ${MYSQL_VERSION} =====\\033[0m"
cd /usr/local/src
wget -N –show-progress "$DOWNLOAD_URL"
echo -e "\\033[32m===== 解压 =====\\033[0m"
tar -xf "$MYSQL_TAR"
mv "$MYSQL_PACKAGE" "$INSTALL_DIR"
echo -e "\\033[32m===== 创建 mysql 用户 & 数据目录 =====\\033[0m"
id -u mysql >/dev/null 2>&1 || useradd -r -s /sbin/nologin mysql
mkdir -p "$DATA_DIR"
chown -R mysql:mysql "$DATA_DIR"
chmod 750 "$DATA_DIR"
echo -e "\\033[32m===== 生成 /etc/my.cnf =====\\033[0m"
cat > "$MYSQL_CNF" <<EOF
[mysqld]
user = mysql
basedir = $INSTALL_DIR
datadir = $DATA_DIR
socket = /tmp/mysql.sock
port = 3306
character-set-server = utf8mb4
default-storage-engine = InnoDB
max_connections = 1000
bind-address = 0.0.0.0
log_error = $DATA_DIR/error.log
pid-file = $DATA_DIR/mysqld.pid
EOF
echo -e "\\033[32m===== 初始化 MySQL =====\\033[0m"
rm -rf "${DATA_DIR😕}/*"
"${INSTALL_DIR}/bin/mysqld" \\
–initialize-insecure \\
–user=mysql \\
–datadir="$DATA_DIR" \\
–basedir="$INSTALL_DIR"
echo -e "\\033[32m===== 配置 systemd 服务 =====\\033[0m"
cat > /usr/lib/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
Type=forking
ExecStart=$INSTALL_DIR/support-files/mysql.server start
ExecStop=$INSTALL_DIR/support-files/mysql.server stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
echo -e "\\033[32m===== 启动并开机自启 =====\\033[0m"
systemctl enable –now mysqld
sleep 3
echo -e "\\033[32m===== 设置 root 密码 & 远程权限 =====\\033[0m"
"${INSTALL_DIR}/bin/mysql" -uroot -e "
ALTER USER 'root'@'localhost' IDENTIFIED BY '${ROOT_PWD}';
CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY '${ROOT_PWD}';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
"
echo -e "\\033[32m===== 加入全局 PATH =====\\033[0m"
echo "export PATH=\\$PATH:$INSTALL_DIR/bin" > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
echo -e "\\033[32m===== 安装完成!=====\\033[0m"
echo "版本信息:"
mysql -V
echo
echo "安装目录: $INSTALL_DIR"
echo "数据目录: $DATA_DIR"
echo "配置文件: $MYSQL_CNF"
echo "root密码: $ROOT_PWD"
echo "登录命令: mysql -uroot -p$ROOT_PWD"
echo
echo "管理命令:"
echo " systemctl start mysqld"
echo " systemctl stop mysqld"
echo " systemctl restart mysqld"
使用方法
# 1. 创建脚本
vim install_mysql849.sh
# 2. 粘贴上面全部内容,保存
# 3. 加执行权限
chmod +x install_mysql849.sh
# 4. 运行
./install_mysql849.sh
安装完成后
- 端口:3306
- 已开放远程 root 登录
- 已设置开机自启
- 直接使用 mysql 命令即可
- 密码:Root@123456(脚本里可改)



