此操作的SUPER权限

时间:2013-08-28 04:24:00

标签: mysql

我使用navidcpanel)在我的共享服务器中创建了数据库和用户databases -> mySQL@ Databases -> add new user,然后为用户navid选择了所有权限。 当我遇到这个错误时,我正在导入mydatabase.sql


我该如何修复错误?商店程序在localhost中运行良好。


什么是SUPER特权?

Error
SQL query:
DELIMITER $$--
-- Procedures
--
CREATE DEFINER = `navid`@`%` PROCEDURE `d_answer` ( OUT `sp_out` INT( 11 ) , IN `sp_id` INT( 11 ) ) NO SQL BEGIN DELETE FROM `tblname` WHERE `a_id` = sp_id;
SET sp_out = ROW_COUNT( ) ;
END$$

MySQL said: Documentation
#1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation 

5 个答案:

答案 0 :(得分:35)

documentation(我的重点):

  

SUPER权限允许帐户使用CHANGE MASTER TO,KILL   或者mysqladmin kill来杀死属于其他帐户的线程(你   可以随时杀死自己的线程),PURGE BINARY LOGS,配置   使用SET GLOBAL进行更改以修改全局系统变量   mysqladmin debug命令,启用或禁用日志记录,执行   即使启用read_only系统变量,启动和更新也会更新   停止从服务器上的复制,任何帐户的规范   在存储的程序和视图的DEFINER属性中,并启用   你连接(一次)即使连接限制由   达到max_connections系统变量。

由于您已经navid到数据库,因此您无需在存储过程中设置DEFINER属性;添加此行会导致错误显示。如果删除此语句,将创建您的过程,并且您将不会收到权限错误。

如果要为其他用户设置存储过程,则只需设置DEFINER,默认情况下,存储过程将获得相同的安全上下文as the user that is creating it

  

所有存储的程序(过程,函数和触发器)和视图   可以有一个名为MySQL帐户的DEFINER属性。 如果   存储的程序或视图定义中省略了DEFINER属性,   默认帐户是创建对象的用户。

答案 1 :(得分:9)

我也遇到了问题并在MySQL Workbench中修复了它。 在我的情况下,这是因为“发送到SQL编辑器>创建语句”在那里有额外的东西,防止在没有修改的情况下使用。

这样的事情:

CREATE ALGORITHM = UNDEFINED DEFINER = schemax @ localhost SQL 安全定义视图viewName AS SELECT ....

将其更改为:

创建视图viewName AS SELECT ....

现在似乎工作,无需更新权限。 **我是我数据库的唯一用户..

答案 2 :(得分:1)

我有同样的问题 - 在我的本地开发服务器上它很好但是在我的托管服务器上(通过PHPMyAdmin)它给了我上面的错误。

如果您对作为当前用户的定义者感到满意,则删除definer属性似乎是解决问题的最简单方法。

答案 3 :(得分:1)

只需删除 DEFINER 属性及其值,例如:

CREATE ALGORITHM=UNDEFINED  SQL SECURITY DEFINER VIEW ...

答案 4 :(得分:0)

不要依赖默认值,如果清空phpMyAdmin中的definer字段或其他未解决的程序,请检查定义者,除非明确需要,否则不应为username@localhost,但{{1 }}