Mysql

保存每個 mysql 使用者登錄嘗試

  • May 9, 2014

有沒有辦法保存使用者嘗試登錄 MySQL 伺服器的使用者名和 IP?

啟用general-log似乎會記錄所有內容,但這似乎會寫入太多詳細資訊,佔用更多空間,並且也有可能保存密碼詳細資訊,因此如果有任何其他可用選項會很有幫助。

如果您擔心登錄失敗,這意味著您的伺服器可以從 Internet 訪問。不應該。

但是,有一種方法可以在不借助通用日誌的情況下獲取資訊。

根據手冊,您可以使用系統變數觸發將這些失敗的連接記錄到錯誤日誌中log_warnings

如果該值大於 1,則將中止的連接寫入錯誤日誌,並寫入新連接嘗試的拒絕訪問錯誤。

這是一個動態變數,但在執行時更改它似乎不會觸發日誌記錄行為。將此添加到您的 my.cnf[mysqld]部分中:

log-warnings = 2

重新啟動伺服器守護程序。

然後,您應該開始在 MySQL 錯誤日誌中看到登錄失敗。


我不知道您所說的“保存密碼詳細資訊”是什麼意思。密碼是從客戶端發送到伺服器的…

SHA1( password ) XOR SHA1( "20-bytes random data from server" <concat> SHA1( SHA1( password ) ) )

…因此您不會發現客戶端嘗試的密碼被記錄在任何地方。伺服器不知道客戶端使用的密碼。它只知道它是否使用了正確的密碼,如果客戶端知道正確的密碼,它會自行計算客戶端返回的雜湊值。

我最近遇到了一個 mysql 審計外掛,它(最終)將身份驗證請求記錄到伺服器中。它確實需要編譯一些程式碼並載入到外掛中,但這並不太難。

https://github.com/outbrain/audit_login

http://code.openark.org/blog/mysql/introducing-audit_login-simple-mysql-login-logfile-based-auditing

引用自:https://dba.stackexchange.com/questions/30525