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

mgu*_*utt 6 php mysql security aes

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

如果我在PHP中创建日志,我将能够删除它们.

但是MySQL通用/慢速查询日志呢?他们的选项是否可用,或者是否可以设置一个不会保存在日志中的mySQL变量?

Kon*_*rak 3

不幸的是,我不知道如何禁用单个语句的 MySQL 日志记录。MySQL 文档建议确保日志安全,原因如下:

\n\n

5.2.3开始。通用查询日志

\n\n
\n

从 MySQL 5.6.3 开始,写入通用查询日志的语句中的密码将被服务器重写,不再以纯文本形式出现。通过使用 --log-raw 选项启动服务器,可以抑制一般查询日志的密码重写。此选项对于诊断目的可能很有用,可以查看服务器接收到的语句的确切文本,但出于安全原因,不建议用于生产用途。

\n\n

MySQL 5.6.3之前,语句中的密码不会被重写,并且一般查询日志应该受到保护。请参阅第 6.1.2.2 节,\n \xe2\x80\x9c密码安全管理员指南\xe2\x80\x9d。

\n
\n\n

不幸的是,(自 5.6.3 起)内置的反密码日志记录仅适用于 MySQL PASSWORD() 函数。

\n\n

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

\n\n
    \n
  1. 对于每个查询:禁用日志、执行查询、启用日志
  2. \n
  3. 在您的应用程序本身中对密码进行哈希处理(在您的情况下,是 php sha)
  4. \n
  5. 保护日志文件,使任何人都看不到语句
  6. \n
  7. 登录到自行删除密码的应用程序
  8. \n
\n