【问题标题】:Change users mysql password with a view to security -- Best Practices从安全角度考虑更改用户 mysql 密码 -- 最佳实践
【发布时间】:2013-07-30 07:44:10
【问题描述】:

我在 SLES 11 SP2 上运行 MySQLserver 版本 5.0.96,我正在寻找一种安全的方法来更改用户的密码。当然,通过以下方式更改用户密码非常容易:

SET PASSWORD FOR 'user'@'192.168.0.%' = PASSWORD('mysecret');

但是这个查询会进入查询日志、二进制日志和 MySQL 历史文件。为了防止这种情况,我使用了:

export MYSQL_HISTFILE=/dev/null

在启动客户端之前,并且:

SET sql_log_bin = 0;
SET sql_log_off = 1;

之后。 grep 和 mysqlbinlog 证明我的计划是齐头并进的,但是我忽略了 MySQL 已经默默地将 /dev/null 的文件模式位更改为 0600。哎呀!

此时,我问自己是否有更好的方法来安全地更改用户密码。现在我问你:

安全更改 MySQL 服务器用户密码的最佳方法是什么?

【问题讨论】:

  • 请注意,MySQL 的本机密码存储格式是未加盐的哈希(5.5 中的双 SHA1),它非常弱。任何有权访问 mysql 表数据文件的人都可能会暴力破解密码。因此,请避免重复使用敏感密码作为 MySQL 密码。
  • 使用 export MYSQL_HISTFILE=/dev/null 作为 root 是一个非常糟糕的主意。 Mysql 重新创建文件 /dev/null。因此,文件模式位和所有权发生了变化。此外,/dev/null 不再是块设备。这可能会产生可怕的后果。例如,某些守护进程无法启动。
  • 一种可能性是在 mysql 之外计算密码哈希。这样mysql甚至不知道密码。可以借助 Digest::SHA 模块在 PERL 中实现这一点,使用:'*'.uc(sha1_hex(sha1('mysecret')))。

标签: mysql security logging change-password


【解决方案1】:

似乎根据dev.mysql,他们建议只保护日志而不是清理它们。

为了防止不必要地暴露于日志文件,它们应该是 位于限制仅访问服务器的目录中,并且 数据库管理员。

复制从服务器将复制主服务器的密码存储在 master.info 文件。将此文件限制为仅供 数据库管理员。

包含包含密码的表或日志文件的数据库备份 应使用受限访问模式进行保护。

看起来这个问题在更高版本的 MySQL 中得到了更优雅的修复。见:http://dev.mysql.com/doc/refman/5.7/en/password-logging.html

在 MySQL 5.7 中,语句日志记录避免了以纯文本形式写入密码 对于以下语句:

创建用户...由...标识...授予...由...标识 密码 ... 从机启动 ... 密码 = ... 创建服务器 ... OPTIONS(... PASSWORD ...) ALTER SERVER ... OPTIONS(... PASSWORD ...)

这些语句中的密码被改写为不按字面意思出现在 语句文本,用于一般查询日志、慢查询日志和二进制 日志。重写不适用于其他语句。

因此,除非您可以升级到更高版本,否则您的解决方案似乎是正确的。

【讨论】:

    【解决方案2】:

    我在 Linux 系统上使用 mysqladmin,但事先有一个额外的步骤来防止显示或记录新密码。 读取命令将允许您输入一个新密码,该密码将存储在“newpass”变量中,而不会显示在屏幕上。 mysqladmin 命令将提示您输入当前密码,但不会在屏幕上显示,如果当前密码正确,它会将 MySQL 用户的新密码设置为“newpass”变量的值。

    echo -n "Enter new password: "; read -s newpass; echo; mysqladmin -u <yourusername> password "$newpass" -p
    

    您可以将上述内容原样复制并粘贴到 Linux 系统上的终端中,但请务必将 &lt;yourusername&gt; 替换为您的 MySQL 用户名。

    【讨论】:

      猜你喜欢
      • 2011-03-26
      • 2013-03-26
      • 1970-01-01
      • 2014-04-27
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      相关资源
      最近更新 更多