[解决] Error Code: 1044. Access denied for user 'root'@'%' to database

今天在学习MyBatis时,学到数据库的存储过程。虽然在学sqlserver时学过,但是mysql上稍微有些不同。而且我用的是sqlyog图形界面工具(就是常说的小海豚)。

首先,这是我的表:

create table p_user(
id int primary key auto_increment,
name varchar(10),
sex char(2)
);
insert into p_user(name,sex) values('A',"男");
insert into p_user(name,sex) values('B',"女");
insert into p_user(name,sex) values('C',"男");

需要创建的存储过程如下:

DELIMITER $
CREATE PROCEDURE mybatis.ges_user_count(IN sex_id INT, OUT user_count INT)
BEGIN
IF sex_id=0 THEN
SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='女' INTO user_count;
ELSE
SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='男' INTO user_count;
END IF;
END
$

执行时报错:

Error Code: 1044. Access denied for user 'root'@'%' to database 

解决办法:

查看用户有没有创建存储过程的权限(我用Sqlyog连接的用户是root,而shost是%):

SELECT host,user,password,Create_routine_priv FROM mysql.user;



如果 Greate_routine_priv 项为N的话则表示没有这个权限,需要修改过来,然后重新启动MySql服务即可。

update mysql.user set Create_routine_priv='Y' where user = '%';


因为我用的是%的host,所以修改 where user= ‘%’的,大家登录的用户和host不同的话请根据实际情况选择用户修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值