HCRM博客

在CentOS上通过yum安装的MySQL查找与重置密码指南

CentOS Yum 安装 MySQL 后设置与强化密码指南

在 CentOS 服务器上通过 yum 安装 MySQL(或 MariaDB)是常见的部署方式,安装完成后,首要且关键的安全步骤就是为 root 用户设置一个强密码并配置初始安全选项,忽视这一步会使得数据库门户大开,极易遭受未授权访问甚至攻击,以下是如何安全、有效地完成这项任务的详细步骤。

在CentOS上通过yum安装的MySQL查找与重置密码指南-图1


第一步:首次登录与发现初始状态

  1. 尝试使用空密码登录 (不推荐直接操作): 安装完成后,MySQL root 用户通常没有密码或有一个临时密码(MySQL 5.7+ 及某些 MariaDB 版本)。强烈建议不要在生产环境尝试空密码登录。

    在CentOS上通过yum安装的MySQL查找与重置密码指南-图2
  2. 查找临时密码 (MySQL 5.7+): 如果安装的是较新的 MySQL 版本(5.7 及以上),安装过程会生成一个 临时随机密码 并记录在日志文件中,使用以下命令查找:

    sudo grep 'temporary password' /var/log/mysqld.log

    sudo grep 'temporary password' /var/log/mysql/mysqld.log # 可能路径

    输出类似:

    2023-10-27T03:12:34.567890Z 1 [Note] A temporary password is generated for root@localhost: JqkR7-&aT9wz

    记下冒号 () 后面的密码 JqkR7-&aT9wz


第二步:安全登录并更改 root 密码

使用临时密码登录后修改 (MySQL 5.7+)

  1. 使用临时密码登录:

    在CentOS上通过yum安装的MySQL查找与重置密码指南-图3
    mysql -u root -p

    系统提示输入密码时,粘贴或输入找到的临时密码,注意:临时密码通常包含特殊字符,输入时确保准确无误。

  2. 立即修改密码: 成功登录后,MySQL 会强制要求先修改密码才能执行任何操作,使用以下命令修改:

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!123';

    'YourNewStrongPassword!123' 替换为符合复杂度要求的强密码。

    • 密码要求: MySQL 默认有密码强度策略,密码通常需要包含:大小写字母、数字、特殊字符,且长度足够(如 12 位以上),如果设置的密码不符合策略,会报错 ERROR 1819 (HY000)
  3. 刷新权限: 执行修改后,立即刷新权限使更改生效:

    FLUSH PRIVILEGES;

如果无临时密码或使用 MariaDB (更常见初始无密码)

  1. 使用 root 用户无密码登录 (仅在确认安全的环境下进行):

    mysql -u root
  2. 设置新密码: 登录后,使用以下 SQL 语句设置密码:

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!123';

    或者使用传统的 SET PASSWORD 语法 (部分旧版本):

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('YourNewStrongPassword!123');
  3. 刷新权限:

    FLUSH PRIVILEGES;

第三步:运行安全脚本强化安装 (强烈推荐)

MySQL 和 MariaDB 都提供了一个名为 mysql_secure_installation 的交互式脚本,用于执行重要的安全加固步骤:

  1. 运行脚本:

    sudo mysql_secure_installation
  2. 按照提示操作:

    • 输入 root 密码: 输入你刚刚设置的强密码。
    • 更改 root 密码? 如果刚改过且满意,可以选择 n (no),否则可以再次修改。
    • 移除匿名用户?强烈建议选择 y (yes),匿名用户允许任何人无需用户名连接数据库,是重大安全隐患。
    • 禁止 root 远程登录?强烈建议选择 y (yes),root 账户只应允许从 localhost (服务器本身) 登录,需要远程管理时,应创建具有特定权限的普通用户。
    • 移除测试数据库 (test)?建议选择 y (yes),默认的 test 数据库可能被无关人员访问或利用。
    • 立即重载权限表?选择 y (yes),确保以上所有安全更改立即生效。

运行此脚本是提升新安装 MySQL 安全性的标准做法,务必执行。


第四步:处理密码策略与复杂度要求

如果设置密码时遇到 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,说明密码不符合 MySQL 默认或配置的密码强度策略。

  1. 检查当前密码策略:

    SHOW VARIABLES LIKE 'validate_password%';

    输出会显示策略配置,

    • validate_password_length: 最小长度
    • validate_password_policy: 策略级别 (LOW, MEDIUM, STRONG - 影响其他规则)
    • validate_password_number_count: 要求的最少数字
    • validate_password_mixed_case_count: 要求的大小写字母
    • validate_password_special_char_count: 要求的最少特殊字符
  2. 应对策略:

    • 设置更强密码: 确保密码包含足够长度、大小写字母、数字和特殊字符。
    • 临时降低策略 (仅用于设置密码,不推荐长期降低):
      SET GLOBAL validate_password_policy = LOW; -- 降低策略级别
      SET GLOBAL validate_password_length = 8;    -- 降低最小长度要求
      ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; -- 设置新密码
      SET GLOBAL validate_password_policy = MEDIUM; -- 设置完成后恢复策略 (根据你的安全需求)
      SET GLOBAL validate_password_length = 12;     -- 恢复长度要求
      FLUSH PRIVILEGES;

      注意:降低策略有安全风险,仅在设置强密码遇到困难时临时使用,并务必在完成后恢复,更好的做法是设计一个符合要求的强密码。

    • 永久修改策略 (需谨慎评估风险): 编辑 MySQL 配置文件 /etc/my.cnf/etc/mysql/my.cnf,在 [mysqld] 部分添加或修改相关参数,然后重启 MySQL 服务 (sudo systemctl restart mysqld)。
      [mysqld]
      validate_password_policy=LOW
      validate_password_length=10

      修改配置需重启生效,且需评估是否符合整体安全要求。


第五步:验证新密码与访问控制

  1. 使用新密码登录:

    mysql -u root -p

    输入新设置的强密码,应能成功登录。

  2. 检查 root 用户权限:

    SELECT user, host, authentication_string FROM mysql.user WHERE user = 'root';

    确认 host 主要是 localhost,如果看到 'root'@'%' 且不需要远程 root 访问,应该删除它:

    DROP USER 'root'@'%';
    FLUSH PRIVILEGES;
  3. 创建专用管理用户 (最佳实践): 为日常数据库管理操作创建一个非 root 的专用用户,并授予其所需的最小权限,避免直接用 root 进行常规操作。

    CREATE USER 'dbadmin'@'localhost' IDENTIFIED BY 'AnotherStrongPassword!456';
    GRANT ALL PRIVILEGES ON *.* TO 'dbadmin'@'localhost' WITH GRANT OPTION; -- 授予所有库表权限 (可按需缩小范围)
    FLUSH PRIVILEGES;

    以后可以使用 dbadmin 用户登录进行管理:

    mysql -u dbadmin -p

第六步:后续安全维护要点

  • 定期更换密码: 将强密码更换纳入运维周期。
  • 最小权限原则: 为每个应用程序或用户创建独立账号,仅授予其完成工作所必需的数据库权限 (SELECT, INSERT, UPDATE, DELETE 等),避免使用 ALL PRIVILEGESGRANT OPTION
  • 防火墙限制: 使用服务器防火墙 (如 firewalldiptables) 严格控制访问 MySQL 端口 (默认 3306) 的来源 IP 地址,只允许受信任的应用服务器或管理终端访问。
  • 禁用本地文件加载: 检查并确保 secure_file_priv 系统变量被设置为一个合适的目录或为空(禁用 LOAD DATA INFILE / SELECT ... INTO OUTFILE),防止通过 SQL 语句读写服务器文件。
  • 加密连接: 如果应用需要远程连接,考虑配置 SSL/TLS 加密传输的数据。
  • 保持更新: 定期使用 yum update 更新 MySQL/MariaDB 软件包,及时修复安全漏洞。

数据库密码是守护数据资产的第一道门锁,在 CentOS 上通过 Yum 安装 MySQL 后,立即设置高强度的 root 密码、运行安全加固脚本、遵循最小权限原则并实施持续的访问控制,这些措施构成服务器安全防护不可或缺的环节,忽略初始密码设置或使用弱口令,等同于将核心数据暴露在巨大风险之中,后果往往是难以承受的。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/36393.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~