標籤:style blog http 使用 os 檔案 資料 2014
MySQL 5.6.19的general_log預設是關閉的,應該說MySQL的general_log預設是關閉的,不分具體版本和平台
一、從設定檔中啟用general_log
Windows下mysql的設定檔為my.ini,所在路徑之前有介紹過;linux下好像是my.cnf。
用記事本開啟my.ini,找到
#General and Slow logging.
log-output=NONE
general-log=0
general_log_file=”電腦名稱.log”
把上面的幾句都注釋掉(我一般不刪除系統的預設值),再重新寫
log-output=FILE
general-log=1
general_log_file=”mysql.log”
這樣修改完成後忘記了要不要重啟mysql的服務,應該要的
這樣general_log就啟用了,並輸出到mysql.log,這個是相對路徑,目錄為E:\ProgramData\MySQL\MySQL Server 5.6\data,當然這也和你安裝的路徑有關
general_log_file=“”也可以設定絕對路徑的,根據自己需要設定
二、使用命令設定
不修改設定檔的前提下,我是通過Workbench串連到MySQL伺服器以root許可權進行操作的
查看general_log是否開啟
show variables like ‘general_log%’;
設定日誌輸出為檔案
set global log_output=FILE
(備忘:這個FILE忘記了要不要單引號,好像不要,但是要是table的話,下文會提到table的)
設定general log的記錄檔路徑
set global general_log_file=’mysql.log’
開啟general log:
set global general_log=on;
其實就是設定檔裡的東西,用命令修改
但這個修改,每次重啟mysql服務後都需要重新設定
三、關於第二步中的table問題
“從MySQL 5.1.6版開始,general query log和slow query log開始支援寫到檔案或者資料庫表兩種方式”,這句話參考網上的,沒有去找考證官方文檔
放到表裡直接用select查詢方便多了,不用每次進系統下面找記錄檔了。直接在資料庫中操作就好了。尤其是使用特定許可權的資料庫帳號遠程操作資料庫。
前幾天就有這樣的需求,我在想只有資料庫帳號,組建記錄檔我要進特定的目錄去查看記錄檔啊,這許可權還需要設啊,那台的作業系統是linux。
使用命令設定:
set global log_output=‘table’
(這一定要單引號)
set global general_log=on;
然後就可以從表裡查詢了
select * from mysql.general_log
我們可以看看general_log的欄位類型
use mysql;
show columns in general_log;
set global general_log_file就不需要設定了
在設定檔裡配置應該和命令列類似了。
不知道為什麼,我電腦回家關機的,上班的時候開機,使用select * from mysql.general_log竟然記錄我上班後的操作,難道這個重啟mysql服務,記錄還是會寫到表裡的。
四、授權super許可權給指定使用者
要開啟general_log,需要有super許可權
root帳號授權super許可權給test
grant super on *.* to [email protected]
系統管理權限(如super,process,file等)不能夠制定某個資料庫,on 後面必須跟*.*(這也是從網上看的,當然我使用grant super on test.* to [email protected] 有報錯 )
mysql下的grant也是第一次使用,可能之前搞過,忘記了
第一次搞MySQL開啟日誌,源於公司的需求。開始都不知道MySQL預設情況下日誌是關閉的。反正遇到問題一點點找答案。
現在就算是總結。
中間還涉及到建立新使用者,最近應該會總結出來的。