为了安全起见,更改用户mysql密码 - 最佳实践

时间:2013-07-30 07:44:11

标签: mysql security logging change-password

我在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服务器用户密码的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

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

  

为防止无理接触日志文件,他们应该这样做   位于限制只访问服务器的目录中   数据库管理员。

     

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

     

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

在MySQL的更高版本中,这个问题似乎更加优雅。请参阅:http://dev.mysql.com/doc/refman/5.7/en/password-logging.html

  

在MySQL 5.7中,语句记录避免以纯文本形式编写密码   以下陈述:

     

创建用户...通过......授予...通过...识别...   PASSWORD ...... SLAVE START ... PASSWORD = ...创建服务器......   选项(...密码......)ALTER SERVER ...选项(...密码......)

     

这些陈述中的密码被重写,不会出现在字面上   语句文本,用于常规查询日志,慢查询日志和二进制文件   登录。重写不适用于其他陈述。

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

答案 1 :(得分:0)

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

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

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