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:ProgramDataMySQLMySQL Server 5.6data,当然这也和你安装的路径有关
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 test@localhost
管理权限(如super,process,file等)不能够制定某个数据库,on 后面必须跟*.*(这也是从网上看的,当然我使用grant super on test.* to test@localhost 有报错 )
mysql下的grant也是第一次使用,可能之前搞过,忘记了
第一次搞MySQL开启日志,源于公司的需求。开始都不知道MySQL默认情况下日志是关闭的。反正遇到问题一点点找答案。
现在就算是总结。
中间还涉及到创建新用户,最近应该会总结出来的。