1

我试图执行这个存储过程:

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

但是,它告诉我:

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

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

4

3 回答 3

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'@'%' 并尝试再次创建程序。

于 2012-09-11T10:35:11.443 回答
1

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

于 2012-09-11T10:05:40.943 回答
0

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

于 2012-09-11T10:05:02.060 回答