日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

5、MySQL通用查询日志(General Query Log)

發布時間:2025/3/20 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5、MySQL通用查询日志(General Query Log) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通用查詢日志(General Query Log)用來記錄用戶的所有操作,包括啟動和關閉 MySQL 服務、更新語句和查詢語句等。

默認情況下,通用查詢日志功能是關閉的。可以通過以下命令查看通用查詢日志是否開啟,命令如下:

mysql> SHOW VARIABLES LIKE '%general%'; +------------------+----------------------------------------------------------------+ | Variable_name | Value | +------------------+----------------------------------------------------------------+ | general_log | OFF | | general_log_file | C:\ProgramData\MySQL\MySQL Server 5.7\Data\LAPTOP-UHQ6V8KP.log | +------------------+----------------------------------------------------------------+ 2 rows in set, 1 warning (0.01 sec)

從結果可以看出,通用查詢日志是關閉的,general_log_file 變量指定了通用查詢日志文件所在的位置。

啟動和設置通用查詢日志

在 MySQL 中,可以通過在 MySQL 配置文件添加 log 選項來開啟通用查詢日志,格式如下:

[mysqld] log=dir/filename

其中,dir 參數指定通用查詢日志的存儲路徑;filename 參數指定日志的文件名。如果不指定存儲路徑,通用查詢日志將默認存儲到 MySQL 數據庫的數據文件夾下。如果不指定文件名,默認文件名為 hostname.log,其中 hostname 表示主機名。

查看通用查詢日志

如果希望了解用戶最近的操作,可以查看通用查詢日志。通用查詢日志以文本文件的形式存儲,可以使用普通文本文件查看該類型日志內容。
例 1
首先我們查看通用查詢日志功能是否是開啟狀態,然后查詢 tb_student 表的記錄,SQL 命令和執行過程如下:

mysql> SHOW VARIABLES LIKE '%general%'; +------------------+----------------------------------------------------------------+ | Variable_name | Value | +------------------+----------------------------------------------------------------+ | general_log | ON | | general_log_file | C:\ProgramData\MySQL\MySQL Server 5.7\Data\LAPTOP-UHQ6V8KP.log | +------------------+----------------------------------------------------------------+ 2 rows in set, 1 warning (0.02 sec) mysql> use test; Database changed mysql> SELECT * FROM tb_student; +----+--------+ | id | name | +----+--------+ | 1 | Java | | 2 | MySQL | | 3 | Python | +----+--------+ 3 rows in set (0.06 sec)

執行成功后,打開通用查詢日志,這里日志名稱為 LAPTOP-UHQ6V8KP.log,下面是通用查詢日志中的部分內容。

C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe, Version: 5.7.29-log (MySQL Community Server (GPL)). started with: TCP Port: 3306, Named Pipe: MySQL Time Id Command Argument 2020-05-29T06:43:44.382878Z 7 Quit 2020-05-29T06:44:10.001382Z 8 Connect root@localhost on using SSL/TLS 2020-05-29T06:44:10.007532Z 8 Query select @@version_comment limit 1 2020-05-29T06:44:11.748179Z 8 Query SHOW VARIABLES LIKE '%general%' 2020-05-29T06:44:25.487472Z 8 Query SELECT DATABASE() 2020-05-29T06:44:25.487748Z 8 Init DB test 2020-05-29T06:44:35.390523Z 8 Query SELECT * FROM tb_student

可以看出,該日志非常清晰地記錄了客戶端的所有行為。

停止通用查詢日志

通用查詢日志啟動后,可以通過兩種方法停止該日志。一種是將 MySQL 配置文件中的相關配置注釋掉,然后重啟服務器,來停止通用查詢日志。具體內容如下:

[mysqld] #log=dir\filename

上述方法需要重啟 MySQL 服務器,這在某些場景,比如有業務量訪問的情況下是不允許的,這時可以通過另一種方法來動態地控制通用查詢日志的開啟和關閉。

設置 MySQL 的環境變量 general_log 為關閉狀態可以停止該日志,示例如下:

mysql> SET GLOBAL general_log=off; Query OK, 0 rows affected (0.00 sec)mysql> SHOW VARIABLES LIKE '%general_log%' \G *************************** 1. row *************************** Variable_name: general_logValue: OFF *************************** 2. row *************************** Variable_name: general_log_fileValue: C:\ProgramData\MySQL\MySQL Server 5.7\Data\LAPTOP-UHQ6V8KP.log 2 rows in set, 1 warning (0.01 sec)

刪除通用查詢日志

在 MySQL 中,可以使用 mysqladmin 命令來開啟新的通用查詢日志。新的通用查詢日志會直接覆蓋舊的查詢日志,不需要再手動刪除了。

mysqladmin 命令的語法如下:

mysqladmin -uroot -p flush-logs

需要注意的是,如果希望備份舊的通用查詢日志,必須先將舊的日志文件拷貝出來或者改名。然后,再執行 mysqladmin 命令。

除了上述方法之外,還可以手工刪除通用查詢日志。刪除之后需要重新啟動 MySQL 服務。重啟之后就會生成新的通用查詢日志。如果希望備份舊的日志文件,可以將舊的日志文件改名,然后重啟 MySQL 服務。

由于通用查詢日志會記錄用戶的所有操作,如果數據庫的使用非常頻繁,通用查詢日志將會占用非常大的磁盤空間,對系統性能影響較大。一般情況下,數據管理員可以刪除很長時間之前的通用查詢日志或關閉此日志,以保證 MySQL 服務器上的硬盤空間。

總結

以上是生活随笔為你收集整理的5、MySQL通用查询日志(General Query Log)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。