我从远程服务器备份了一些数据库,当我尝试导入该备份时,我的本地服务器出现问题。我在这一行中收到错误:
CREATE ALGORITHM=UNDEFINED DEFINER=root@% SQL SECURITY DEFINER VIEW tematics_field AS select....
。
两台服务器都有一个mysql 5.5.2x。两个服务器的用户不同。
答案 0 :(得分:14)
我只想:
CREATE VIEW tematics_field AS select....
一切都很完美,导入工作做得很好。
答案 1 :(得分:9)
您需要将主机名(或本例中的通配符)放在单引号中:
CREATE ALGORITHM=UNDEFINED DEFINER=root@'%' SQL SECURITY DEFINER VIEW tematics_field AS
select.....
答案 2 :(得分:1)
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权限的原因。 您可以在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
答案 3 :(得分: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
答案 4 :(得分:0)
我遇到了类似的事情。代替:
CREATE ALGORITHM=UNDEFINED DEFINER=`cccts_org`@`%` SQL SECURITY DEFINER VIEW
我用CURRENT_USER()代替了DEFINER,它起作用了。
CREATE ALGORITHM=UNDEFINED DEFINER=CURRENT_USER() SQL SECURITY DEFINER VIEW
如果在下一次导入中使用了该密码,则该密码应该是可移植的,并且不会超出旧的凭据。