在phpMyAdmin中创建没有SUPER权限的视图

时间:2012-11-21 12:04:41

标签: mysql phpmyadmin

我正在尝试通过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

我无法在我的托管公司获得超级特权,所以无论如何都可以解决这个问题吗?

提前致谢: - )

1 个答案:

答案 0 :(得分:16)

来自文档:

如果指定DEFINER子句,除非拥有SUPER权限,否则不能将值设置为除自己之外的任何用户。这些规则确定合法的DEFINER用户值:

  • *如果您没有SUPER权限,则唯一的合法用户值是您自己的帐户,无论是字面指定还是使用CURRENT_USER。您无法将定义者设置为其他帐户。*
  • 如果您拥有SUPER权限,则可以指定任何语法上合法的帐户名称。如果该帐户实际上不存在,则会生成警告。

检查您的MySQL帐户,它不是byname @ localhost

解决方案:

  • 使用授予SUPER权限的帐户使用DEFINER子句创建新视图。
  • 不要在CREATE VIEW中使用DEFINER子句,在这种情况下,MySQL将创建视图DEFINER = CURRENT_USER。