有时我翻看我的MySQL日志,偶然发现一些AES_ENCRYPT/AES_DECRYPT请求以明文形式显示密码。是否有可能在MySQL常规/慢速查询日志中隐藏密码?
如果我在PHP中创建日志,我将能够delete他们。
但是MySQL general/slow query logs怎么样。他们的选择是否可用,或者是否可以设置不会保存在日志中的mySQL变量?
有时我翻看我的MySQL日志,偶然发现一些AES_ENCRYPT/AES_DECRYPT请求以明文形式显示密码。是否有可能在MySQL常规/慢速查询日志中隐藏密码?
如果我在PHP中创建日志,我将能够delete他们。
但是MySQL general/slow query logs怎么样。他们的选择是否可用,或者是否可以设置不会保存在日志中的mySQL变量?
不幸的是,我知道没有办法禁用MySQL日志记录的个人陈述。 MySQL文档建议保持固定为此日志:
在MySQL 5.6.3,以书面向广大 查询日志报表的密码是由服务器重写不会发生字面意思是纯文字 。通过使用--log-raw选项启动服务器,可以为通用查询日志 禁止密码重写。这个选项可能是 用于诊断目的,看到服务器收到的报表的确切文本为 ,但出于安全原因,不建议 用于生产用途。
在MySQL 5.6.3之前,不会重写语句中的密码,并且应该保护 一般查询日志。参见第6.1.2.2节, “Administrator Guidelines for Password Security”。
不幸的是,那个(自5.6.3开始)内置的反密码记录只适用于MySQL PASSWORD()函数。
我看到你的问题的一些可能的解决方案:
你在哪里发现它仅适用于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
第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
我也想看一个声明的权威来源,它只适用于“PASSWORD()” - 我至少希望它也可以使用SET SETWORD查询 - 但@mgutt我怀疑它*不会与'AES_ENCRYPT '''AES_DECRYPT'因为它们不仅用于密码,它们还是一般的加密函数。 – DaveRandom 2012-08-16 09:12:24