我创建我的数据库和用户navid
在我的共享服务器中cpanel
(databases -> mySQL@ Databases -> add new user
),然后为用户选择所有权限navid
。
我正在导入mydatabase.sql
当我遇到这个错误时。
我该如何修复该错误?商店程序运行良好localhost
.
什么是超级特权?
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
来自文档 http://dev.mysql.com/doc/refman/5.0/en/privileges-provided.html#priv_super(我的重点):
SUPER 权限使帐户能够使用 CHANGE MASTER TO、KILL
或 mysqladmin kill 来终止属于其他帐户的线程(您
总是可以杀死你自己的线程),清除二进制日志,配置
使用 SET GLOBAL 修改全局系统变量进行更改,
mysqladmin debug 命令,启用或禁用日志记录,执行
即使启用了 read_only 系统变量,也会更新,启动和
停止从属服务器上的复制,任何帐户的说明
在存储程序和视图的 DEFINER 属性中,并启用
即使连接限制由
达到 max_connections 系统变量。
既然你已经是navid
到数据库中,不需要设置DEFINER
存储过程中的属性;添加这一行会导致错误出现。如果删除此语句,将创建您的过程并且您不会收到权限错误。
你只需要设置DEFINER
如果您正在为其他用户设置存储过程,则默认情况下该存储过程将获得相同的安全上下文作为创建它的用户 http://dev.mysql.com/doc/refman/5.0/en/stored-programs-security.html:
所有存储的程序(过程、函数和触发器)和视图
可以有一个 DEFINER 属性来命名 MySQL 帐户。如果
从存储的程序或视图定义中省略 DEFINER 属性,
默认帐户是创建对象的用户。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)