admin管理员组

文章数量:1566678

前言

最近在写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的权限,又怎么能连接成功呢?

结束

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

本文标签: 解决办法错误原因mysqlConnection