存储过程权限错误

时间:2012-09-11 09:59:59

标签: mysql stored-procedures

我尝试执行此存储过程:

DELIMITER |
DROP PROCEDURE IF EXISTS HelloWorld|
CREATE PROCEDURE HelloWorld()
BEGIN
UPDATE sites_niche SET `short_review` = REPLACE(`short_review`, '’',"'");
END |
DELIMITER ;

然而,它告诉我:

  

拒绝用户'bestcam728'@'%'访问数据库'bestcamdir_main'

问题是我已登录数据库..该错误阻止我创建存储过程...我该如何克服这个问题? 还有一个无法创建新用户的问题

3 个答案:

答案 0 :(得分:3)

运行SHOW GRANTS命令查看用户'bestcam728'@'%'拥有的所有权限。

授予'bestcam728'@'%'权限以root身份连接,并使用GRANT语句授予您所需的权限。似乎缺少CREATE或CREATE ROUTINE特权。您可以在全局或特定数据库中授予这些权限 -

-- Grant database privileges
GRANT CREATE ON `bestcamdir_main`.* TO 'bestcam728'@'%';
GRANT CREATE ROUTINE ON `bestcamdir_main`.* TO 'bestcam728'@'%';

-- Grant global privileges
GRANT CREATE ON *.* TO 'bestcam728'@'%';
GRANT CREATE ROUTINE ON *.* TO 'bestcam728'@'%';

然后重新连接为'bestcam728'@'%'并尝试再次创建程序。

答案 1 :(得分:1)

检查mysql.db中的权限以及可能的mysql.user。

答案 2 :(得分:0)

使用workbench并以root用户身份登录。然后,您可以为用户授予创建存储过程的正确权限。