在基于Red Hat的Linux发行版中,CentOS因其稳定性和广泛的企业级应用而备受青睐,MySQL作为全球最受欢迎的开源关系型数据库管理系统,与CentOS的组合是构建动态网站和应用程序的经典后端架构,本文将详细介绍在CentOS系统上通过官方Yum仓库安装、配置并安全化MySQL的完整流程,旨在为开发者与系统管理员提供一个清晰、可靠的参考指南。
准备工作:环境检查与清理
在开始安装之前,确保系统环境干净是避免后续冲突的关键,确认您的CentOS版本,因为不同版本可能对应不同的软件仓库配置,您可以通过以下命令查看系统版本信息:
cat /etc/redhat-release
检查系统中是否已安装了MySQL或其分支(如MariaDB),如果存在旧版本或冲突的数据库软件,务必将其彻底卸载,使用以下命令进行查找和移除:
yum list installed | grep -i mysql yum list installed | grep -i mariadb # 如果存在,则使用 yum remove 命令卸载 # sudo yum remove mysql-community-server mariadb-libs
安装MySQL官方Yum仓库
为了确保能够获取到最新、最稳定的MySQL版本,推荐使用Oracle官方提供的Yum仓库,这简化了安装和未来的更新过程。
下载仓库安装包:访问MySQL官方Yum仓库下载页面,找到适用于您CentOS版本的RPM包链接,您可以使用
wget
命令直接下载,对于CentOS 7:sudo wget https://repo.mysql.com/mysql80-community-release-el7-5.noarch.rpm
对于CentOS 8,链接会有所不同,请务必选择正确的版本。
安装仓库包:下载完成后,使用
yum
本地安装该RPM包,此操作会将MySQL仓库信息添加到您的系统中。sudo yum localinstall mysql80-community-release-el7-5.noarch.rpm
安装MySQL服务器
仓库配置完成后,安装MySQL服务器本身变得非常简单,只需执行一条yum
命令即可。
sudo yum install mysql-community-server
此命令会自动处理所有依赖关系,并从官方仓库下载MySQL Community Server的最新稳定版进行安装,安装过程可能需要一些时间,具体取决于您的网络速度。
启动服务并进行初始安全配置
安装完毕后,MySQL服务默认是未启动的,您需要手动启动它,并设置为开机自启。
# 启动MySQL服务 sudo systemctl start mysqld # 设置MySQL服务为开机自启 sudo systemctl enable mysqld
MySQL在首次启动时,会为root
用户生成一个临时的随机密码,并记录在日志文件中,您需要找到这个密码才能进行首次登录。
sudo grep 'temporary password' /var/log/mysqld.log
命令的输出会包含一串类似 root@localhost: <临时密码>
的文本,复制这个临时密码。
随后,运行MySQL自带的安全配置脚本,这是保护数据库安全的重要一步。
sudo mysql_secure_installation
该脚本会引导您完成一系列安全设置,交互过程如下表所示:
提示 | 建议操作 | 说明 |
---|---|---|
Enter password for user root: | 粘贴刚才复制的临时密码 | 使用临时密码登录 |
New password: | 设置您的新root密码 | 新密码需符合强度要求(大小写、数字、特殊字符) |
Re-enter new password: | 再次输入新密码 | 确认密码 |
Change the password for root? | n | 通常已在上一环节更改,无需再次更改 |
Remove anonymous users? | y | 强烈建议移除,消除安全隐患 |
Disallow root login remotely? | y | 禁止root用户从远程登录,增强安全性 |
Remove test database and access to it? | y | 移除默认的测试数据库 |
Reload privilege tables now? | y | 立即应用所有权限更改 |
登录验证与基础配置
完成安全配置后,您就可以使用新设置的密码登录MySQL了。
mysql -u root -p
输入密码后成功进入MySQL命令行界面,即可执行SQL语句,您可以通过以下命令验证安装:
SHOW DATABASES; SELECT VERSION();
为了更好地支持中文等多字节字符,建议将默认字符集设置为utf8mb4
,您可以通过编辑MySQL配置文件/etc/my.cnf
来实现,在[mysqld]
和[client]
部分添加以下内容:
[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci [client] default-character-set=utf8mb4
修改后,重启MySQL服务使配置生效:
sudo systemctl restart mysqld
配置防火墙(可选)
如果需要从其他服务器远程访问此MySQL数据库,您必须开放CentOS系统防火墙的默认3306端口。
# 永久开放MySQL服务(端口3306) sudo firewall-cmd --permanent --add-service=mysql # 重新加载防火墙规则 sudo firewall-cmd --reload
您还需要在MySQL中为特定IP或所有IP()创建具有相应权限的远程用户。
相关问答 FAQs
问题1:安装过程中提示 “GPG key check failed” 或类似签名验证失败,该如何处理?
解答:这个问题通常是因为系统未能验证MySQL官方仓库的GPG签名,最安全的解决方法是手动导入MySQL的GPG公钥,您可以使用以下命令:
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2025
导入公钥后,再次执行yum install mysql-community-server
命令即可,如果问题依旧存在,作为临时解决方案,您可以在安装命令后添加--nogpgcheck
参数来跳过GPG检查,但这会降低安全性,不推荐在生产环境中使用。
问题2:如果不慎忘记了MySQL的root密码,应该如何重置?
解答:重置root密码需要以“安全模式”启动MySQL,步骤如下:
- 停止MySQL服务:
sudo systemctl stop mysqld
- 跳过权限验证启动:
sudo mysqld_safe --skip-grant-tables &
- 无密码登录:
mysql -u root
- 重置密码:在MySQL命令行中执行:
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '您的新密码';
请确保新密码符合当前的密码策略。
- 正常重启服务:使用
kill
命令结束安全模式的进程,然后正常启动服务:sudo pkill mysqld sudo systemctl start mysqld
之后,您就可以使用新密码登录了。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复