我navid使用cpanel(databases -> mySQL@ Databases -> add new user)在共享服务器中创建数据库和用户,然后为用户选择ALL PRIVILEGES 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
Run Code Online (Sandbox Code Playgroud)
Bur*_*lid 35
从文档(我的重点):
SUPER权限允许帐户使用CHANGE MASTER TO,KILL或mysqladmin kill来杀死属于其他帐户的线程(您可以随时杀死自己的线程),PURGE BINARY LOGS,使用SET GLOBAL修改全局系统变量的配置更改,mysqladmin debug命令,启用或禁用日志记录,执行更新,即使启用了read_only系统变量,在从属服务器上启动和停止复制,在存储的程序和视图的DEFINER属性中指定任何帐户,并使您能够连接(一次)甚至如果达到由max_connections系统变量控制的连接限制.
由于您已经navid访问过数据库,因此无需DEFINER在存储过程中设置该属性; 添加此行会导致错误显示.如果删除此语句,将创建您的过程,并且您将不会收到权限错误.
您只需要设置DEFINER是否为其他用户设置存储过程,默认情况下,存储过程与创建它的用户获得相同的安全上下文:
所有存储的程序(过程,函数和触发器)和视图都可以具有命名MySQL帐户的DEFINER属性.如果从存储的程序或视图定义中省略了DEFINER属性,则默认帐户是创建该对象的用户.
小智 9
我也遇到了问题并在MySQL Workbench中修复了它.在我的情况下,这是因为"发送到SQL编辑器>创建语句"在那里有额外的东西,防止无需修改使用.
像这样的东西:
CREATE ALGORITHM =未定义的DEFINER = schemax@ localhostSQL安全定义视图viewName作为选择....
把它改成这个:
创建视图viewName作为选择....
似乎现在工作,无需更新权限.**我是我数据库的唯一用户..