Mysql

Mysql 遠端連接日誌

  • September 19, 2014

我需要允許遠端連接到我在最新穩定 CentOS 上執行的 mysql 伺服器。

我根本不喜歡這個想法,所以我至少想收集盡可能多的相關資訊。確切地說,我需要(想要)以下內容:

  • $$ datetime $$1.2.3.4 連接
  • $$ datetime $$3.4.5.6 密碼錯誤

根據mysql manual,要麼記錄所有內容(不可接受的性能成本),要麼記錄任何與我相關的內容(以及什麼可以幫助我們追踪攻擊者/不負責任的管理員)。

我想過每 N 分鐘 grepping 和擦除這個日誌,但這似乎並不正確。

實際上有一種方法可以將所有連接記錄到 mysql 本身:

假設:我們將用於儲存此資訊的數據庫的名稱將稱為 admin。

  1. 創建表以儲存連接資訊。如果您不想包含唯一鍵,則不必包含唯一鍵。

CREATE TABLE admin.connections (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, connect_time DATETIME NOT NULL, user_host VARCHAR(50) NOT NULL, connection_id INT UNSIGNED NOT NULL, UNIQUE INDEX idx_connect_time_user_host (connect_time, user_host)); 2. 設置初始化連接變數。這是要為每個連接的客戶端執行的字元串。詳情在這裡。

SET GLOBAL init_connect = "INSERT INTO admin.connections (connect_time, user_host, connection_id) VALUES (NOW(), CURRENT_USER(), CONNECTION_ID());"; 3. 檢查所有使用者的權限以確保他們可以將記錄插入到 admin.connections 表中。 4. 以沒有全域權限的使用者身份登錄,並且應該在 admin.connections 表中插入一行。請注意,init-connect 系統變數不適用於具有全域權限的使用者。無論好壞,我們所有的 DBA 都知道這意味著什麼。 5. 看著你的連接表成長和蓬勃發展。你剛剛開始了一個新的寵物(項目)。

來源: http: //mysqlhints.blogspot.com.es/2011/01/how-to-log-user-connections-in-mysql.html

現在您必須期望您的使用者是負責任的,他們可能會開始用數據淹沒您的表格,但隨後您會與有惡意的人打交道。為了安全起見,我會使用遠端位置來監視此表並保留其副本。

引用自:https://serverfault.com/questions/410370