Mysql

MySQL root 登錄電子郵件通知

  • November 17, 2016

當我以外的其他人以 root 身份登錄時,是否有一個腳本可以執行以獲取電子郵件?

我是 MySQL 新手。這些是我的內容my.cnf

[mysqld]
*刪除前導#並設置為最重要數據的RAM數量
在 MySQL 中記憶體。從專用伺服器總 RAM 的 70% 開始,否則為 10%。

*innodb_buffer_pool_size = 128M

*刪除前導#以打開一個非常重要的數據完整性選項:日誌記錄

*在備份之間更改二進制日誌。

*log_bin

*刪除前導 # 以設置主要對報告伺服器有用的選項。

*對於事務和快速 SELECT,伺服器預設值更快。

*根據需要調整尺寸,嘗試找到最佳值。

*join_buffer_size = 128M

*sort_buffer_size = 2M

*read_rnd_buffer_size = 2M

datadir = /var/lib/mysql

socket=/var/lib/mysql/mysql.sock

*建議禁用符號連結以防止各種安全風險
符號連結=0

日誌錯誤=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

埠=1433

如果有人以 root 身份登錄 MySQL,請提出一種獲取電子郵件警報的方法。

有多種方法可以解決這個問題,但使用日誌是最簡單的方法,因為不需要在 mysql 中創建表來記錄帶有時間戳的 root 或使用者登錄,如:http ://www.fromdual.com/sites/預設/文件/logon_trigger_wp.pdf

我使用 yum 安裝了 logtail 和 logcheck,然後編寫了以下腳本,然後創建了一個執行該腳本的 cron 作業:

#!/bin/sh

如果

$$ -f foundadmin.txt $$ 然後 rm foundadmin.txt fi if$$ -f send.txt $$ 然後 rm send.txt fi /usr/sbin/logtail2 -f /var/log/mysqld.log -o mysqld.log.offset | grep “root@localhost on using Socket” > foundadmin.txt

如果

$$ -s foundadmin.txt $$ 然後回顯“主題:MYSQLDB Admin Login on $ (hostname)" > send.txt cat foundadmin.txt >> send.txt /bin/mailx -s “Subject: MySQLDB Admin Login on $ (主機名)” myemail@com < send.txt rm foundadmin.txt rm send.txt fi exit 0

這是使其每分鐘執行一次的 cron 作業:

這是在一個時間間隔內執行一個 cron 作業並郵寄給管理員以通知

          • cd /opt/mysql-check ; ./mysql-notify-script.sh

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