17.4通用查询日志
通用查询日志是用来记录用户的所有操作,包括启动和关闭MySQL服务、更新语句 和查询语句等。本节将为读者介绍通用查询日志的内容。
17.4.1启动和设置通用查询日志
默认情况下,通用查询日志功能是关闭的。通过my.cof或者my.ini文件的log选项可以开启通用查询日志。将log选项加入到my.cof或者my.ini文件的[mysqld]组中。形式如下:
# my.cnf (Linux操作系统下)或者my.ini(Windows操作系统下) [mysqld] log[=DIR\[filename]]
其中,DIR参数指定通用查询日志的存储路径;filename参数指定日志的文件名。如果不指定存储路径,通用查询日志将默认存储到MySQL数据库的数据文件夹下。如果不指定文件名,默认文件名为hostname.log。hostname是MySQL服务器的主机名。
17.4.2查看通用查询日志
用户的所有操作都会记录到通用查询日志中。如果希望了解某个用户最近的操作,可以查看通用查询日志。通用查询日志是以文本文件的形式存储的。Wind0wS操作系统可以 使用文本文件查看器查看.Linux操作操作系统下,可以使用vi工具或者使用gedit工具来查看。
【示例17-7】下面是笔者MySQL服务器的通用查询日志的部分内容.
MySQL, Version: 5.1.40-community-log (MySQL Community Server (GPL)). started with: TCP Port: 3306, Named Pipe: /tmp/mysql.sock Time ld Command Argument 091122 16:30:48 1 Connect root@localhost on 1 Query select@@version_comment limit 1 091122 16:30:53 1 Query SELECT DATABASE() 1 InnoDB test 091122 16:31:16 1 Query DELTE FROM score WHERE id=8 091122 16:31:32 1 Query DELETE FROM score WHERE id=8 091122 16:31:37 1 Query DELETE FROM score WHERE id=9 091122 16:31:41 1 Query DELETE FROM score WHERE id=10 091122 16:31:46 1 Query DESC score 091122 16:32:41 1 Query INSERT INTO score VALUES(NULL,905,'英语',84) 091122 16:32:44 1 Quit 091122 17:30:36 2 Connect root@localhost on 2 Query select @@version comment limit 1 091122 17:30:40 2 Query SELECT DATABASE() 2 InitDB test 091122 17:30:46 2 Query SELECT * FROM score 091122 17:31:00 2 Query DELETE FROM score WHERE id=11 091122 18:30:27 2 Quit
17.4.3删除通用查询日志
通用査询日志会记录用户的所有操作。如果数据库的使用非常频繁,那么通用查询日志志将会占用非常大的磁盘空间。数据库管理员可以删除很长时间之前的通用查询日志,以保证MySQL服务器上的硬盘空间。本小节将介绍删除通用查询日志的方法。
MySQL数据库中,也可以使用mysqladmin如命令来开启新的通用查询日志.新的通用查询日志会直接覆盖旧的查询日志,不需要再手动删除了。mysqladmin命令的语法如下:
mysqladmin nj root -p flush-logs
如果希望备份旧的通用查询日志,那么就必须先将旧的日志文件拷贝出来或者改名。 然后,再执行上面的mysqladmin命令。除了上述方法以外,可以手工删除通用查询日志。删除之后需要重新启动MySQL服务。重启之后就会生成新的通用查询日志。如果希望备份旧的日志文件,可以将旧的日志 文件改名,然后重启MySQL服务。