开发过程中遇到的sql问题,总想看下数据库执行的日志,便研究了下怎么看sql操作日志的方法,特分享如下,看了很多资料,都写的不是太全,总结了一下

一、my.cnf文件查找

    不同的操作系统my.cnf放的位置是不一样的。

  1. windows下mysql配置文件存放在“C:/Program Files/MySQL/MySQL Server 5.5/my.ini”下。
  2. 验证Mac下没有my.cnf文件,可使用命令:
sudo find / -name my.cnf
  1. 进行搜索一下,搜索结果什么也没有,便得以验证。也可以使用命令:
sudo mysql --help | grep my.cnf


  1. 来查看下有关my.cnf的help信息,该命令在mac上的搜索结果如下:
Default options are read from the following files in the given order:                
                  /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

官方的解释是: 

You can now check for files using the above output at /etc/my.cnf, then /etc/mysql/my.cnf and so on. If there isn't one at one of those locations, you can create one and know MySQL will use it.

  1. 意思是在上述路径中没有找到my.cnf的话,你就可以新建一个my.cnf了。

二、my.cnf定制及日志文件配置

show variables like 'log_bin'
  1. 开启日志服务(为ON状态就不用开启了,本文针对于OFF状态)。由于mac下没有my.cnf文件,所以可以从目录 

/usr/local/mysql/support-files/my-medim.cnf

  1.  
    或者 

/usr/local/opt/mysql/support-files/my-default.cnf

  1.   下拷贝任意一个.cnf文件到“/etc”目录下,并且重命名为my.cnf。
chmod 755 /etc/my.cnf
  1. 修改my.cnf权限,可读可写权限。然后打开my.cnf文件,找到“[mysqld]”,其下面添加以下内容:
[mysqld]                
             # binlog 配置                
              log-bin = /usr/local/var/mysql/logs/mysql-bin.log                
            expire-logs-days = 14                
              max-binlog-size  = 500M                
               server-id        = 1
  1. 当然,里面的参数可以自己配置,包括路径等。配置完成后,重启mysql服务(mac下本文用brew安装的mysql,可使用mysql.server start/stop启动或者关闭mysql服务),重新登录mysql,重新执行:
show variables like 'log_bin'


  1. 查看日志。进行一系列mysql操作后,在上述配置的日志文件目录下查看,便存在了以下文件: 

mysql-bin.000001 mysql-bin.000002 mysql-bin.index

  1.  
    其中 mysql-bin.index 文件中存放的是日志文件的索引,日志文件如“mysql-bin.000002”可以用shell命令mysqlbinlog来查看,即 “mysqlbinlog mysql-bin.000002”。 

备注:binlog,即二进制日志,它记录了数据库上的所有改变,改变数据库的SQL语句执行结束时,将在binlog的末尾写入一条记录,同时通知语句解析器,语句执行完毕。查看可使用sql命令“show binlog events in 'mysql-bin.000002';”