16

我从远程服务器备份了一些数据库,当我尝试导入该备份时,我的本地服务器出现问题。我在这一行得到一个错误:

CREATE ALGORITHM=UNDEFINED DEFINER=root@% SQL SECURITY DEFINER VIEW tematics_field AS select.....

两台服务器都有一个 mysql 5.5.2x。并且用户在这两个服务器上有所不同。

4

5 回答 5

19

我只尝试:

CREATE VIEW tematics_field AS select....

一切都很完美,导入也做得很好。

于 2013-07-11T18:17:05.933 回答
14

MySql 错误:#1227 – 访问被拒绝;您需要(至少一个)超级权限才能执行此操作

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY INVOKER VIEW `inventory_stock_1` AS SELECT DISTINCT `legacy_stock_status`.`product_id` AS `product_id`,`legacy_stock_status`.`website_id` AS `website_id`,`legacy_stock_status`.`stock_id` AS `stock_id`,`legacy_stock_status`.`qty` AS `quantity`,`legacy_stock_status`.`stock_status` AS `is_salable`,`product`.`sku` AS `sku` FROM (`cataloginventory_stock_status` `legacy_stock_status` JOIN `decg_catalog_product_entity` `product` ON(`legacy_stock_status`.`product_id` = `product`.`entity_id`)) ;

固定解决方案:

问题是您将 definer 设置为 root,这不是您当前正在运行的用户,这就是您需要SUPER privilege的原因。您可以在 RDS 中创建一个名为 root 的用户,并使用 root 运行命令,或者干脆

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY INVOKER

改成:

CREATE ALGORITHM=UNDEFINED DEFINER=CURRENT_USER SQL SECURITY INVOKER

阅读更多关于 CURRENT_USER 最终 SQL 查询看起来像

CREATE ALGORITHM=UNDEFINED DEFINER=CURRENT_USER SQL SECURITY INVOKER VIEW `inventory_stock_1` AS SELECT DISTINCT `legacy_stock_status`.`product_id` AS `product_id`,`legacy_stock_status`.`website_id` AS `website_id`,`legacy_stock_status`.`stock_id` AS `stock_id`,`legacy_stock_status`.`qty` AS `quantity`,`legacy_stock_status`.`stock_status` AS `is_salable`,`product`.`sku` AS `sku` FROM (`cataloginventory_stock_status` `legacy_stock_status` JOIN `decg_catalog_product_entity` `product` ON(`legacy_stock_status`.`product_id` = `product`.`entity_id`)) ;

谢谢。来自:MazziTorch

于 2019-05-02T08:56:09.100 回答
13

您需要将主机名(或本例中的通配符)放在单引号中:

CREATE ALGORITHM=UNDEFINED DEFINER=root@'%' SQL SECURITY DEFINER VIEW tematics_field AS 
select.....
于 2013-07-11T18:29:54.910 回答
1

我遇到了类似的事情。代替:

CREATE ALGORITHM=UNDEFINED DEFINER=`cccts_org`@`%` SQL SECURITY DEFINER VIEW

我用 CURRENT_USER() 代替了 DEFINER,它起作用了。

CREATE ALGORITHM=UNDEFINED DEFINER=CURRENT_USER() SQL SECURITY DEFINER VIEW

如果在下一次导入中使用它,它应该是可移植的,并且不会被旧凭据绊倒。

于 2020-07-06T17:57:25.697 回答
0
 CREATE ALGORITHM=UNDEFINED DEFINER=root@% SQL SECURITY DEFINER VIEW tematics_field AS select.....
Please remove "ALGORITHM=UNDEFINED DEFINER=root@% SQL SECURITY DEFINER" and keep like "CREATE VIEW tematics_field AS select.....
it will work while importing or direct pasting under sql tab
于 2019-02-10T06:49:41.017 回答