有時我翻看我的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