1,在mysql服务器db中建立单独的记录访问信息的库

set names utf8;

create database access_log;

CREATE TABLE`access_log` 

(

`id`int(11) NOT NULL AUTO_INCREMENT,

`thread_id` int(11) DEFAULT NULL, -- 线程ID,这个值很重要

`log_time`timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 登录时间

`localname` varchar(30) DEFAULT NULL, -- 登录名称

`matchname` varchar(30) DEFAULT NULL, -- 登录用户

PRIMARYKEY (`id`)

) ENGINE=InnoDBAUTO_INCREMENT=1 DEFAULT CHARSET=utf8 comment '录入用户登录信息';




2,在配置文件中配置init-connect参数。登录时插入日志表。如果这个参数是个错误的SQL语句,登录就会失败。

vim/usr/local/mysql/my.cnf

init-connect='INSERTINTO access_log.access_logVALUES(NULL,CONNECTION_ID(),NOW(),USER(),CURRENT_USER());'

然后重启数据库


3,创建普通用户,不能有super权限,而且用户必须有对access_log库的access_log表的insert权限,否则会登录失败。

给登录用户赋予insert权限,但是不赋予access_log的insert、select权限,

GRANTINSERT,DELETE,UPDATE,SELECT ON test.* TO audit_user@'%' IDENTIFIED BY'cacti_user1603';

mysql> GRANTCREATE,DROP,ALTER,INSERT,DELETE,UPDATE,SELECT ON test.* TO audit_user@'%'IDENTIFIED BY 'cacti_user1603';

Query OK, 0 rowsaffected (0.00 sec)

mysql> exit