Lost connection to MySQL server during query很无语的错误原因以及解决办法

前言

最近在写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 用户名;

这下就全连接上了
Lost connection to MySQL server during query很无语的错误原因以及解决办法_第1张图片
解释一下原因

init_connect表示服务器将为每个连接的客户端执行的字符串语句
也就是说你每次连接先执行init_connect后面接的这个语句,既然你用户都没有insert的权限,又怎么能连接成功呢?

结束

解决问题很开心,但是花了我好久的时间,呜呜呜

你可能感兴趣的:(数据库,mysql)