今天公司内测试数据库被人更改,老板要查出这个人,纠结了好一会,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密码告诉别人,避免不必要的麻烦。