在服务器运维和网站开发的领域中,CentOS 因其稳定性和与 Red Hat Enterprise Linux (RHEL) 的兼容性而备受青睐,而 MySQL 则是全球最受欢迎的开源关系型数据库管理系统之一,在 CentOS 系统上部署 MySQL 服务是一项非常常见且重要的任务,本文将详细阐述在 CentOS 系统上安装、配置和初步使用 MySQL 数据库的完整流程,旨在为系统管理员和开发者提供一份清晰、可操作的指南。
准备工作
在开始安装之前,进行必要的准备工作可以确保后续过程的顺利,并避免潜在的冲突,这一阶段主要涉及系统检查和环境清理。
确认您的 CentOS 版本,因为 CentOS 7 和 CentOS 8/Stream 在软件仓库管理上存在差异,这会影响我们选择安装方式,您可以通过以下命令查看系统版本:
cat /etc/centos-release
检查系统中是否已经安装了 MariaDB 或 MySQL 的旧版本,MariaDB 是 MySQL 的一个分支,在 CentOS 7 等版本中可能作为默认数据库被预装,为了避免端口冲突或库文件版本不一致等问题,建议先将其卸载,可以使用以下命令进行查找和卸载:
# 查找已安装的 mariadb 或 mysql 包 rpm -qa | grep -i mariadb rpm -qa | grep -i mysql # 如果找到相关包(mariadb-libs-5.5.68-1.el7.x86_64),则使用 yum 移除 sudo yum remove mariadb-libs-5.5.68-1.el7.x86_64
更新系统软件包到最新状态,并安装一些基础工具,如 wget
,这将用于下载 MySQL 的官方仓库配置文件。
sudo yum update -y sudo yum install wget -y
安装 MySQL Server
我们推荐通过 MySQL 官方提供的 Yum 仓库来安装,这样可以确保获取到最新、最稳定的版本,并且便于后续的更新和管理。
步骤 1:下载并安装 MySQL Yum 仓库
访问 MySQL 官方 Yum 仓库下载页面,找到适合您系统版本的仓库配置包(rpm 文件),对于 CentOS 7,通常使用 el7
版本,使用 wget
命令直接下载:
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
下载完成后,使用 rpm
命令安装这个仓库配置包:
sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm
执行此命令后,MySQL 的 Yum 仓库信息将被添加到系统中,位于 /etc/yum.repos.d/
目录下。
步骤 2:选择并安装 MySQL 版本
默认情况下,启用的仓库可能是最新的 MySQL 8.0 版本,如果您需要安装其他版本(为了兼容旧项目而需要 MySQL 5.7),可以手动编辑仓库配置文件。
sudo vi /etc/yum.repos.d/mysql-community.repo
在文件中,您会看到不同版本的仓库配置,通过设置 enabled=0
来禁用不需要的版本,设置 enabled=1
来启用您想要的版本,要安装 MySQL 5.7,您需要禁用 8.0 并启用 5.7。
配置好版本后,使用 yum
命令安装 MySQL 服务器,Yum 会自动处理所有依赖关系。
sudo yum install mysql-community-server -y
安装后配置与安全设置
安装完成后,MySQL 服务尚未启动,且 root 用户拥有一个临时的随机密码,我们需要进行一系列配置才能正式使用。
步骤 1:启动 MySQL 服务并设置开机自启
sudo systemctl start mysqld sudo systemctl enable mysqld
步骤 2:获取临时 root 密码
对于 MySQL 5.7 及以上版本,初始密码会被记录在日志文件中,可以通过以下命令查找:
sudo grep 'temporary password' /var/log/mysqld.log
命令的输出会包含一串类似 A temporary password is generated for root@localhost: *aL?9d>k>3fS
的信息,其中的 *aL?9d>k>3fS
就是临时密码。
步骤 3:运行安全安装脚本
MySQL 提供了一个名为 mysql_secure_installation
的交互式脚本,用于引导您完成基本的安全设置,这是强烈推荐执行的步骤。
sudo mysql_secure_installation
脚本会依次提示您:
- 输入您刚刚找到的临时 root 密码。
- 设置新的 root 密码(密码必须符合强度要求,包含大小写字母、数字和特殊字符)。
- 是否移除匿名用户?(建议选择
Y
) - 是否禁止 root 用户远程登录?(出于安全考虑,建议选择
Y
,然后根据需要创建特定的远程用户) - 是否移除
test
数据库?(建议选择Y
) - 是否重新加载权限表?(选择
Y
使更改立即生效)
通过回答这些问题,您可以快速地加固数据库的初始安全性。
下表小编总结了 mysql_secure_installation
脚本的主要功能:
功能选项 | 推荐操作 | 说明 |
---|---|---|
设置 root 密码 | Y | 为超级管理员账户设置一个强密码 |
移除匿名用户 | Y | 删除无需密码即可登录的账户,消除安全隐患 |
禁止 root 远程登录 | Y | 防止攻击者直接尝试破解 root 账户,提升安全性 |
移除 test 数据库 | Y | 删除默认的测试数据库,生产环境通常不需要 |
重新加载权限表 | Y | 让以上所有安全配置立即生效 |
验证安装与基本操作
配置完成后,您就可以登录 MySQL 并进行基本操作了。
使用新设置的 root 密码登录:
mysql -u root -p
系统会提示输入密码,成功登录后,您将进入 MySQL 的命令行客户端,可以执行一些简单的 SQL 命令来验证:
-- 查看所有数据库 SHOW DATABASES; -- 创建一个新数据库 CREATE DATABASE my_app_db; -- 退出 MySQL 客户端 EXIT;
如果这些命令都能顺利执行,说明您的 MySQL 数据库已经成功安装并运行。
配置防火墙(可选)
如果您的应用部署在其他服务器上,需要远程连接到此 MySQL 服务器,那么必须在 CentOS 的防火墙中开放 MySQL 的默认端口 3306
。
# 开放 3306 端口 sudo firewall-cmd --permanent --add-port=3306/tcp # 重新加载防火墙配置使更改生效 sudo firewall-cmd --reload
开放端口会增加服务器的安全风险,请确保您已经创建了具有适当权限的专用数据库用户,而不是直接使用 root 用户进行远程连接。
相关问答 FAQs
问题 1:在执行 yum install mysql-community-server
时,提示 GPG 密钥验证失败怎么办?
解答: 这是一个常见问题,通常是因为系统无法验证 MySQL 软件包的签名,最安全且推荐的方法是导入 MySQL 官方的 GPG 密钥,您可以尝试执行以下命令来导入:
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2025
导入密钥后,再次运行安装命令即可,如果问题依旧存在,作为临时解决方案(不推荐用于生产环境),可以在安装命令后添加 --nogpgcheck
参数来跳过签名检查,但这会带来一定的安全风险。
问题 2:我忘记了 MySQL 的 root 密码,如何重置它?
解答: 忘记 root 密码是数据库管理员可能遇到的棘手问题,但可以通过以下步骤安全地重置:
- 停止 MySQL 服务:
sudo systemctl stop mysqld
- 以“安全模式”启动 MySQL: 这个模式会跳过权限表验证。
sudo mysqld_safe --skip-grant-tables &
- 无密码登录 MySQL:
mysql -u root
- 重置密码: 在 MySQL 命令行中,依次执行以下 SQL 命令(请将
'YourNewPassword'
替换为您的新密码):-- 切换到 mysql 系统数据库 USE mysql; -- 更新 root 用户的密码(注意,MySQL 8.0+ 的密码字段是 authentication_string) ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword'; -- 刷新权限,使更改生效 FLUSH PRIVILEGES; -- 退出 EXIT;
- 重启 MySQL 服务: 停止安全模式进程,然后正常启动服务。
sudo pkill mysqld sudo systemctl start mysqld
完成以上步骤后,您就可以使用新设置的密码登录了。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复