您的位置:首页 > 数据库 > MySQL

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

2016-11-25 20:11 357 查看
今天在学习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不同的话请根据实际情况选择用户修改。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql 1044 mysql Error
相关文章推荐