首页 > 代码库 > Windows下MySQL 5.6.19 general_log的设置

Windows下MySQL 5.6.19 general_log的设置

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;

image

set global general_log_file就不需要设置了

在配置文件里配置应该和命令行类似了。

不知道为什么,我电脑回家关机的,上班的时候开机,使用select * from mysql.general_log竟然记录我上班后的操作,难道这个重启mysql服务,记录还是会写到表里的。

四、授权super权限给指定用户

image

要开启general_log,需要有super权限

root账号授权super权限给test

grant super on *.*  to test@localhost

管理权限(如super,process,file等)不能够制定某个数据库,on 后面必须跟*.*(这也是从网上看的,当然我使用grant super on test.* to test@localhost 有报错  )

mysql下的grant也是第一次使用,可能之前搞过,忘记了

 

第一次搞MySQL开启日志,源于公司的需求。开始都不知道MySQL默认情况下日志是关闭的。反正遇到问题一点点找答案。

现在就算是总结。

中间还涉及到创建新用户,最近应该会总结出来的。