更改用户mysql密码以获得安全性 - 最佳实践

问题描述 投票:4回答:2

我在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 security logging change-password
2个回答
1
投票

似乎根据dev.mysql,他们建议只保护原木而不是消毒它们。

为了防止无理接触日志文件,它们应位于限制仅访问服务器和数据库管理员的目录中。

复制从站在master.info文件中存储复制主机的密码。将此文件重新限制为只能由数据库管理员访问。

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

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

在MySQL 5.7中,语句日志记录避免以明文形式为以下语句编写密码:

创建用户......通过......认可......通过......设置密码识别......开始......密码= ...创建服务器...选项(...密码......)更改服务器...选项(...密码...)

对于通用查询日志,慢查询日志和二进制日志,这些语句中的密码将被重写为不会出现在语句文本中。重写不适用于其他声明。

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


0
投票

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

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

您可以将上述内容复制并粘贴到Linux系统上的终端中,但请确保将<yourusername>替换为您的MySQL用户名。

© www.soinside.com 2019 - 2024. All rights reserved.