是否可以在MySQL常规/慢速查询日志中隐藏密码?

时间:2012-08-16 08:34:31

标签: php mysql security aes

有时我查看我的MySQL日志,偶然发现了一些以明文形式显示密码的AES_ENCRYPT/AES_DECRYPT个请求。

如果我在PHP中创建日志,我可以delete

但是MySQL general/slow query logs怎么样?他们的选项是否可用,或者是否可以设置一个不会保存在日志中的mySQL变量?

1 个答案:

答案 0 :(得分: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. 登录自行删除密码的应用程序