今天公司内测试数据库被人更改,老板要查出这个人,纠结了好一会,mysql默认页不记录IP地址,所以找不到,在网上找了点资料,也有人跟我有一样的困惑,他们的解决办法是init_connect,下面我来写一下这次事故的解决办法。

创建测试表:
mysql.sock@test> create  table t1 ( cur_user varchar(100), n_user varchar(100),in_time timestamp  default current_timestamp()) ;
Query OK, 0 rows affected (0.09 sec)

设定 init_connect :
mysql.sock@(none)>  set global init_connect='insert into test.t1 (cur_user,n_user) values (current_user(),user())';                
Query OK, 0 rows affected (0.00 sec)

这样就记录下所有执行sql语句的机器的IP,配合binlog就可以查找出是哪台机器执行的sql造成的数据丢失,把自己的责任就可以推到别人身上啦,嘻嘻。有super权限的用户是不记录的,所以不要把root密码告诉别人,避免不必要的麻烦。