如何在CentOS上安装MySQL作为LNMP环境的一部分?

2025-06-04 22:09:53 173
魁首哥

在CentOS服务器环境中搭建强大的数据库后端,MySQL无疑是最经典且可靠的选择之一,作为网站的核心支撑,一个稳定、安全、性能良好的MySQL服务至关重要,本文将详细介绍在采用LNMP(Linux, Nginx, MySQL, PHP)架构的CentOS系统上,安装MySQL社区版(MySQL Community Server)的完整步骤,力求清晰易懂,帮助您高效完成部署。

准备工作:系统更新与依赖

在着手安装任何新软件之前,保持系统最新是良好的习惯,这有助于修复已知漏洞并确保兼容性。

  1. 登录服务器: 使用SSH客户端(如PuTTY、Terminal)以root用户或有sudo权限的用户登录您的CentOS服务器。
  2. 更新系统包: 执行以下命令:
    sudo yum update -y

    系统将检查并更新所有可升级的软件包,输入y确认更新(如果提示)并等待完成。

添加MySQL官方Yum仓库

CentOS默认的仓库可能不包含最新版的MySQL,为了获取官方提供的最新稳定版本和安全更新,我们需要添加MySQL的官方Yum仓库。

  1. 下载仓库安装包: 访问MySQL官方Yum仓库下载页面(通常可以在MySQL官网找到对应链接),或者直接使用wget下载,请务必确认您下载的是对应您CentOS版本的仓库包(例如CentOS 7或8),以下是CentOS 7的示例:
    sudo wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm

    提示:如果链接失效或需要其他版本,请访问MySQL官方网站查找正确的仓库包链接。

  2. 安装仓库RPM包: 下载完成后,安装该仓库包:
    sudo rpm -ivh mysql80-community-release-el7-7.noarch.rpm

    这个操作会将MySQL的仓库信息添加到您的系统中。

  3. 验证仓库启用: 检查仓库是否成功添加并启用:
    sudo yum repolist enabled | grep "mysql.*-community.*"

    您应该能看到类似mysql80-community的仓库被列出。

安装MySQL服务器

仓库配置好后,安装MySQL服务器就变得非常简单。

  1. 执行安装命令:
    sudo yum install mysql-community-server -y

    这条命令会安装MySQL服务器软件及其所有必需的依赖包。-y参数表示自动确认安装提示,安装过程可能需要几分钟,取决于您的网络速度和服务器性能。

启动MySQL服务并设置开机自启

安装完成后,需要启动MySQL服务并确保它在服务器重启后自动运行。

  1. 启动MySQL服务:
    sudo systemctl start mysqld
  2. 查看服务状态: 验证MySQL是否已成功启动:
    sudo systemctl status mysqld

    如果看到类似active (running)的状态信息,表示启动成功。

  3. 设置开机自启:
    sudo systemctl enable mysqld

    这样,每次服务器重启时,MySQL都会自动启动。

进行安全初始化(关键步骤)

新安装的MySQL为了安全起见,会生成一个临时的root用户密码,并且默认的安全配置并不完善,运行mysql_secure_installation脚本是加固数据库安全的关键一步。

  1. 查找临时密码: MySQL首次启动后,临时密码会记录在日志文件中,使用以下命令查找:
    sudo grep 'temporary password' /var/log/mysqld.log

    输出类似:[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: JqkfT3jae!8d,请记下冒号()后面的密码(包含空格和特殊字符)。

  2. 运行安全配置脚本:
    sudo mysql_secure_installation
  3. 按照提示操作:
    • Enter password for user root: 输入刚才找到的临时密码(输入时不会显示,输完按回车)。
    • Change the password for root? (Press y|Y for Yes, any other key for No): 强烈建议输入y更改root密码。
    • New password: 设置一个强壮的、符合复杂性要求的新密码(通常要求包含大小写字母、数字、特殊字符,长度至少8位)。
    • Re-enter new password: 再次输入新密码确认。
    • Remove anonymous users? (Press y|Y for Yes, any other key for No): 输入y,删除匿名用户可提升安全性。
    • Disallow root login remotely? (Press y|Y for Yes, any other key for No): 输入y,通常建议禁止root用户远程登录,使用普通用户连接更安全。
    • Remove test database and access to it? (Press y|Y for Yes, any other key for No): 输入y,移除测试数据库及其访问权限。
    • Reload privilege tables now? (Press y|Y for Yes, any other key for No): 输入y,使以上所有安全设置立即生效。

配置防火墙(如果需要远程访问)

如果您的应用程序(比如部署在同一服务器的PHP程序)只需要本地访问MySQL(通过localhost0.0.1),则通常不需要额外配置防火墙,但如果需要从其他服务器或客户端远程连接MySQL,则需要在防火墙中开放MySQL的默认端口(3306)。

  1. 开放MySQL端口(3306):
    sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
  2. 重新加载防火墙规则:
    sudo firewall-cmd --reload

    重要安全提示: 开放远程访问端口存在风险,务必确保:

    • 仅允许受信任的IP地址或IP段访问(使用--add-rich-rule更安全)。
    • 用户权限最小化,避免使用root远程登录。
    • 考虑使用SSH隧道或VPN进行更安全的连接,生产环境强烈建议限制访问源IP。

测试MySQL连接与基本操作

完成安装和安全配置后,测试一下是否能正常连接并使用MySQL。

  1. 登录MySQL命令行:
    mysql -u root -p

    系统会提示您输入上一步设置的root新密码,输入正确密码后,您将看到MySQL的命令行提示符:mysql>

  2. 执行简单命令: 尝试查看当前数据库:
    SHOW DATABASES;

    您应该能看到系统默认的数据库列表(如information_schema, mysql, performance_schema, sys)。

  3. 退出MySQL命令行:
    EXIT;

基础管理命令备忘

  • 启动服务: sudo systemctl start mysqld
  • 停止服务: sudo systemctl stop mysqld
  • 重启服务: sudo systemctl restart mysqld
  • 查看状态: sudo systemctl status mysqld
  • 设置开机自启: sudo systemctl enable mysqld (安装后通常已执行)
  • 取消开机自启: sudo systemctl disable mysqld
  • 查看MySQL版本: mysql --version 或登录后执行 SELECT VERSION();

常见问题与排查

  • 忘记root密码: 需要停止MySQL服务,以跳过授权表的方式启动,然后重置密码,具体步骤请务必参考官方文档,操作不当有安全风险。
  • 无法启动/连接失败:
    • 检查服务状态:sudo systemctl status mysqld
    • 查看错误日志:sudo tail -f /var/log/mysqld.log (这是诊断问题最重要的信息来源)。
    • 检查端口监听:sudo netstat -tulnp | grep mysql
    • 确认防火墙规则。
  • 密码策略问题: MySQL 8.0 默认密码策略较严格,如果设置密码时报错,请确认密码满足复杂性要求(大小写、数字、特殊字符、长度),可在安全初始化后,登录MySQL使用ALTER USER语句调整密码策略(需谨慎操作)。

观点:

作为长期维护服务器的实践者,我始终认为数据库的安全是网站生命线的基石,一次成功的安装只是起点,后续定期的安全更新(sudo yum update mysql-community-server)、严谨的用户权限管理、以及数据库配置的持续调优,才是保障服务稳定高效运行的关键,尤其要重视mysql_secure_installation步骤和防火墙策略,这些看似简单的设置,往往是阻挡外部侵扰的第一道有效防线,MySQL 8.0带来了显著的性能提升和更完善的安全特性,投入时间去熟悉它,绝对物有所值。


分享
海报
173
上一篇:如何在CentOS中高效拷贝大文件?下一篇:如何作一条线段的中垂线?

忘记密码?

图形验证码