2012-08-16 73 views

回答

3

不幸的是,我知道没有办法禁用MySQL日志记录的个人陈述。 MySQL文档建议保持固定为此日志:

5.2.3. The General Query Log

在MySQL 5.6.3,以书面向广大 查询日志报表的密码是由服务器重写不会发生字面意思是纯文字 。通过使用--log-raw选项启动服务器,可以为通用查询日志 禁止密码重写。这个选项可能是 用于诊断目的,看到服务器收到的报表的确切文本为 ,但出于安全原因,不建议 用于生产用途。

在MySQL 5.6.3之前,不会重写语句中的密码,并且应该保护 一般查询日志。参见第6.1.2.2节, “Administrator Guidelines for Password Security”。

不幸的是,那个(自5.6.3开始)内置的反密码记录只适用于MySQL PASSWORD()函数。

我看到你的问题的一些可能的解决方案:

  1. 对于每个查询:禁用日志,执行查询,启用日志
  2. 哈希在你的应用程序本身的密码(你的情况, PHP SHA)
  3. 安全日志文件,以便没有人可以看到报表
  4. 登录朝着一个应用程序,删除密码本身
+0

你在哪里发现它仅适用于PASSWORD()的信息? [密码安全管理员指南](http://dev.mysql.com/doc/refman/5.1/en/password-security-admin.html)听起来就像一个例子列表(CREATE USER,GRANT,SET PASSWORD,密码),不保证完整性。 – mgutt 2012-08-16 08:57:28

+0

第5个选项 - 安排一个cron作业来运行'file_put_contents('/ log_file_path',preg_replace('#\ b(AES_(?: EN | DE)CRYPT)\ s * \(\ s *([\'^“ ])(。+?)\ 2 \ s * \)\ b#i','$ 1($ 2 ***** $ 2)',file_get_contents('/ log_file_path'));' – DaveRandom 2012-08-16 08:57:50

+0

我也想看一个声明的权威来源,它只适用于“PASSWORD()” - 我至少希望它也可以使用SET SETWORD查询 - 但@mgutt我怀疑它*不会与'AES_ENCRYPT '''AES_DECRYPT'因为它们不仅用于密码,它们还是一般的加密函数。 – DaveRandom 2012-08-16 09:12:24