一键安装 MySQL 5.7(CentOS 7)自动化脚本详解

适用系统 :CentOS 7 / RHEL 7
目标版本 :MySQL 5.7(官方社区版)
安装方式 :通过 MySQL 官方 Yum 仓库
特点:自动导入 GPG 密钥、跳过重复安装、获取初始密码、验证服务状态


在 Linux 环境下部署 MySQL 是大数据、Web 开发或数据库运维的常见任务。手动配置仓库、处理 GPG 密钥、查找临时密码等步骤繁琐且易错。本文提供一个 全自动 Bash 脚本,只需一条命令即可完成 MySQL 5.7 的完整安装与基础验证。


📌 脚本核心功能

  • ✅ 强制 root 权限运行(安全要求)
  • ✅ 自动检测是否已安装 MySQL(避免重复操作)
  • ✅ 自动导入 MySQL 官方 GPG 公钥(解决 GPG check FAILED 错误)
  • ✅ 自动安装 MySQL 5.7 官方 Yum 仓库
  • ✅ 安装 mysql-community-server
  • ✅ 启用开机自启 + 立即启动服务
  • ✅ 自动提取初始 root 密码(来自 /var/log/mysqld.log
  • ✅ 验证 MySQL 服务是否正常响应

📜 完整安装脚本(适用于 CentOS 7)

将以下内容保存为 install_mysql57.sh

bash 复制代码
#!/bin/bash
# 自动安装 MySQL 5.7
set -e

echo "=== MySQL 5.7 自动安装脚本 ==="

# 检查是否为 root 用户
if [ "$EUID" -ne 0 ]; then
  echo "❌ 请以 root 用户运行此脚本。"
  exit 1
fi

# 检查 MySQL 是否已安装
if command -v mysql &>/dev/null; then
  echo ">>> 检测到 MySQL 已安装,跳过安装步骤。"
  mysql --version
  exit 0
fi

# 导入 MySQL 官方 GPG 公钥(防止 GPG check FAILED)
echo ">>> 导入 MySQL 官方 GPG 公钥..."
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

# 安装 MySQL yum repository
if ! rpm -qa | grep -q mysql57-community-release; then
  echo ">>> 安装 MySQL yum 仓库..."
  yum install -y https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
else
  echo ">>> 已安装 MySQL yum 仓库,跳过..."
fi

# 安装 MySQL server
echo ">>> 安装 MySQL server..."
yum install -y mysql-community-server

# 开机自启并启动
echo ">>> 配置开机自启并启动 MySQL..."
systemctl enable mysqld
systemctl start mysqld

# 获取初始 root 密码
MYSQL_TEMP_PASSWORD=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
echo ">>> MySQL 安装完成!"
echo "初始 root 密码: $MYSQL_TEMP_PASSWORD"

# 验证 MySQL 可用性
if mysqladmin ping &>/dev/null; then
  echo "✅ MySQL 服务运行正常!"
  mysql --version
else
  echo "⚠️ MySQL 服务未能正常启动,请检查日志 /var/log/mysqld.log"
fi

echo "=== MySQL 5.7 安装完成 ==="

▶️ 使用步骤

1. 保存脚本并赋予执行权限

bash 复制代码
sudo vim install_mysql57.sh
# 粘贴上述脚本内容
chmod +x install_mysql57.sh

2. 以 root 身份运行

bash 复制代码
sudo ./install_mysql57.sh

⚠️ 注意:必须使用 root 或 sudo,否则无法写入系统仓库和启动服务。

3. 记录初始密码

脚本输出示例:

复制代码
初始 root 密码: sK7#mP!9xQr2

该密码由 MySQL 在首次初始化时自动生成,仅用于首次登录。

4. 首次登录并修改密码

bash 复制代码
mysql -u root -p
# 输入上面显示的临时密码

# 登录后立即修改密码(MySQL 5.7 要求强密码策略)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword123!';

💡 密码需包含大小写字母、数字、特殊字符,长度 ≥ 8。


🔒 安全说明

  • 本脚本仅完成 基础安装,未进行安全加固(如删除匿名用户、禁止远程 root 登录等)。

  • 生产环境建议运行 mysql_secure_installation 进行安全配置:

    bash 复制代码
    mysql_secure_installation

❓ 常见问题解答

Q1:为什么需要导入 GPG 公钥?

A:Yum 默认启用 GPG 校验。若不导入官方公钥,安装 RPM 包时会报错:

复制代码
GPG key retrieval failed: [Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql"

Q2:脚本是否支持 CentOS 8 或其他版本?

A:当前脚本专为 CentOS 7 设计(使用 el7 仓库包)。

若用于 CentOS 8,请替换仓库 URL 为 mysql80-community-release-el8-*.noarch.rpm,但注意:MySQL 5.7 官方已停止对 EL8 的支持,建议升级到 MySQL 8.0。

Q3:找不到临时密码怎么办?

A:检查日志文件:

bash 复制代码
sudo grep 'temporary password' /var/log/mysqld.log

若无输出,可能是 MySQL 初始化失败,查看完整日志排查:

bash 复制代码
sudo tail -n 50 /var/log/mysqld.log

✅ 总结

本脚本极大简化了 MySQL 5.7 在 CentOS 7 上的部署流程,特别适合:

  • 快速搭建测试/开发环境
  • 自动化运维(配合 Ansible、Shell 批量部署)
  • 学习 Hadoop/Hive 生态前的元数据库准备

📌 后续建议 :安装完成后,配置 my.cnf、创建专用 Hive Metastore 用户、授权远程访问(如需),并定期备份数据。

相关推荐
keep the3 小时前
Windows启动IOS17/18的WDA
windows·ios·自动化
爱编码的傅同学4 小时前
【线程同步】信号量与环形队列的生产消费模型
linux·windows·ubuntu·centos
Nick.Q4 小时前
CentOS 8 离线安装beyond compare
linux·centos
陌上丨4 小时前
MySQL8.0高可用集群架构实战
数据库·mysql·架构
一只自律的鸡5 小时前
【MySQL】第十一章 存储过程和存储函数
数据库·mysql
翔云1234565 小时前
MySQL 中的 utf8 vs utf8mb4 区别
数据库·mysql
强子感冒了5 小时前
MySQL学习随笔:数据类型与字段约束
学习·mysql
tritone5 小时前
学习Chef自动化配置管理工具,为了实践环境部署,我选择了**阿贝云**的**免费虚拟主机**和**免费云服务器**来搭建测试平台。
服务器·学习·自动化
一只酸奶牛^_^5 小时前
解决LinuxDeploy部署mysql、redis数据库无法启动问题。
redis·mysql