我正在尝试通过phpmyadmin中的SQL选项卡来创建/导入这样的视图:
CREATE ALGORITHM=UNDEFINED DEFINER=`byname`@`localhost` SQL SECURITY DEFINER VIEW `wr_averages` AS select `nf_users`.`id` AS `id`,(`nf_users`.`points` / `nf_users`.`played`) AS `average_points` from `nf_users` where (`nf_users`.`played` > 24);
我收到此错误:
#1227 - Access denied; you need the SUPER privilege for this operation
我无法在我的托管公司获得超级特权,那么无论如何都可以解决这个问题吗?
提前感谢:-)
从文档中:
如果指定 DEFINER 子句,则不能将该值设置为除您自己的用户之外的任何用户,除非您具有 SUPER 特权。这些规则确定合法的 DEFINER 用户值:
- *如果您没有 SUPER 权限,则唯一的合法用户价值是您自己的帐户,无论是字面指定还是使用 CURRENT_USER 指定。您不能将定义器设置为其他帐户。
- 如果您具有 SUPER 权限,则可以指定任何语法合法的帐户名称。如果该帐户实际上不存在,则会生成警告。
检查您的MySQL帐户,它不是byname
@localhost
。
解决 方案:
- 使用授予 SUPER 权限的帐户使用 DEFINER 子句创建新视图。
- 不要在 CREATE VIEW 中使用 DEFINER 子句,在这种情况下,MySQL 将创建视图 DEFINER = CURRENT_USER。