最近在写mysql实验,在配置审计环境,搞了好几天各种bug,今天总算发现问题了,万万没想到竟是授权的问题,泪emo
是这样的,我在数据库建了表
create database auditdb;
use auditdb;
create table accesslog(
id int primary key auto_increment,
connectid int,
connectuser varchar(30),
logintime datetime
);
在my.ini这个配置文件中加了下面这段内容
init_connect='insert into auditdb.accesslog(connectid, connectuser, logintime) values(connection_id(), user(), now());'
然后发现我创建的好几个用户连接不上了,报错有两种
给所有用户授予向 auditdb.accesslog插入数据的权限。
GRANT INSERT ON auditdb.accesslog TO 用户名;这下就全连接上了
解释一下原因
init_connect表示服务器将为每个连接的客户端执行的字符串语句
也就是说你每次连接先执行init_connect后面接的这个语句,既然你用户都没有insert的权限,又怎么能连接成功呢?



