“CREATE ALGORITHM=UNDEFINED DEFINER”需要超级权限。

5

我正在将旧数据库导入到新数据库中。

为此,我创建了一个具有与以前相同特权的用户:

几乎所有命令都能正常工作,除了以下命令:

CREATE ALGORITHM=UNDEFINED DEFINER=`foo`@`localhost` SQL SECURITY DEFINER VIEW `wp_affiliate_wp_campaigns` AS select `wp_affiliate_wp_visits`.`affiliate_id` AS `affiliate_id`,`wp_affiliate_wp_visits`.`campaign` AS `campaign`,count(`wp_affiliate_wp_visits`.`url`) AS `visits`,count(distinct `wp_affiliate_wp_visits`.`url`) AS `unique_visits`,sum(if((`wp_affiliate_wp_visits`.`referral_id` <> 0),1,0)) AS `referrals`,round(((sum(if((`wp_affiliate_wp_visits`.`referral_id` <> 0),1,0)) / count(`wp_affiliate_wp_visits`.`url`)) * 100),2) AS `conversion_rate` from `wp_affiliate_wp_visits` group by `wp_affiliate_wp_visits`.`affiliate_id`,`wp_affiliate_wp_visits`.`campaign`;

这导致了以下错误:

Error Code: 1227. Access denied; you need (at least one of) the SUPER privilege(s) for this operation

这很奇怪,因为该表是使用与我的旧数据库相同权限的用户创建的(即表foo的所有权限)。

所以我的问题是:

  • 这个命令到底是做什么的?
  • 为什么我突然需要超级权限来执行它,而我的旧数据库却不需要呢?
2个回答

8
我遇到了同样的问题。对我有用的方法是去掉以下部分:
  ALGORITHM=UNDEFINED DEFINER=`foo`@`localhost` SQL SECURITY DEFINER

您只需使用以下代码:

您只需使用以下代码:

  CREATE VIEW `wp_affiliate_wp_campaigns'...

非常成功,祝你好运!


0

只需尝试这个

CREATE ALGORITHM=UNDEFINED DEFINER=CURRENT_USER SQL SECURITY INVOKER

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接