linuxmysql日誌在哪
根據筆者上一篇文章—Linux系統上記錄用戶操作的審計日誌 。本文來利用相同的方法記錄MYSQL操作的審計日誌。
使用用mysql工具連接MySQL server的所有操作會默認記錄到~/.mysql_history文件中,這個文件會把所有操作記錄下來,包括創建用戶和修改用戶的明文密碼,這在生產系統上是不安全的。如果不想保存,僅僅刪除是不行的(文件不存在會再建立),要直接將其軟連接到垃圾箱。
ln -s /dev/null ~/.mysql_history
利用上一篇文章相同的方法記錄MYSQL操作的審計日誌,是因為mysql工具本身就是有一個shell, 每次mysql連接退出後,都會把此次操作的信息記錄到~/.mysql_history文件中。那麼可以重新定義MYSQL_HISTFILE環境變數來保存mysql日誌。
先看置於/etc/profile.d目錄下的環境變數的腳本mysql_history.sh,和loginlog類似。
在測試時,發現平時使用的普通用戶在操作mysql後無法記錄,而root用戶(平時沒有操作過mysql)可以記錄成功。後來在在~/.mysql_history文件找到了操作記錄,估計是這個文件還存在的原因,刪除後才記錄到新的MYSQL_HISTFILE定義的路徑。
和loginlog一樣,需要定期刪除過期日誌,以下腳本置於/etc/cron.weekly 目錄下。
delete_time=15
find /opt/mysqllog/ -mtime +$delete_time -name '*.log' -exec rm -r {} \;
但是相比於loginlog,mysqllog有兩點暫時沒有解決。
1、定義最大的記錄條數history.maxSize不知在哪定義,my.cnf?
2、每一條命令的時間記錄添加。
② 如何查看mysql運行,訪問記錄等日誌
mysql有以下幾種日誌:
錯誤日誌: -log-err
查詢日誌: -log
慢查詢日誌: -log-slow-queries
更新日誌: -log-update
二進制日誌: -log-bin
是否啟用了日誌
mysql>showvariableslike'log_%';
怎樣知道當前的日誌
mysql>showmasterstatus;
顯示二進制日誌數目
mysql>showmasterlogs;
看二進制日誌文件用mysqlbinlog
shell>mysqlbinlogmail-bin.000001
或者
shell>mysqlbinlogmail-bin.000001|tail
在配置文件中指定log的輸出位置.
Windows:Windows 的配置文件為 my.ini,一般在MySQL的安裝目錄下或者 c:Windows 下。
Linux:Linux 的配置文件為 my.cnf ,一般在 /etc 下。
windows下
#在[mysqld]中輸入
#log
log-error="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/error.log"
log="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/mysql.log"
long_query_time=2
log-slow-queries="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/slowquery.log"
Linux下
#在[mysqld]中輸入
#log
log-error=/usr/local/mysql/log/error.log
log=/usr/local/mysql/log/mysql.log
long_query_time=2
log-slow-queries=/usr/local/mysql/log/slowquery.log
③ linux版mysql安裝後mysql的日誌文件找不到
這個要看安裝mysql的配置,默認安裝及日誌文件如下:
mysql安裝
yum -y install mysql mysql-server mysql-devel
chkconfig --level 35 mysqld on
/etc/init.d/mysqld start
④ linux中的MySQL開啟二進制日誌
二進制日誌開啟方法:
查看系統變數log_bin,如果其值為OFF,表示沒有開啟二進制日誌(binary log),如果需要開啟二進制日誌
修改my.cnf,在[mysqld]下面增加
log-bin=/data/mysqldb/log/mysql-bin.log
binlog_format = ROW
expire_logs_days=15
server_id = 2
修改完之後重啟MySQL,然後再查看show variables like 'log_bin%'; 這個時候你會發現log_bin的value值變成了ON
⑤ linux怎麼查詢mysql操作日誌
mysql -u root -p //以root賬戶登陸之後 use mysql; select User from user;
⑥ linux怎麼查看mysql的binlog日誌存放的位置
這個你可以看配置文件 啟用了才有這樣的記錄默認是沒有的
/etc/my.conf
log-bin = mysqlbin
一般放在/var/lib/mysql
比如上面的設置重啟資料庫會生成mysqlbin.000001文件