适用系统 :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进行安全配置:bashmysql_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 用户、授权远程访问(如需),并定期备份数据。