mysql 创建算法=未定义的定义符

d7v8vwbk  于 2022-10-31  发布在  Mysql
关注(0)|答案(6)|浏览(252)

我从远程服务器上备份了一些数据库,但当我试图导入备份时,本地服务器上出现了问题。我在下面一行中得到了一个错误:
CREATE ALGORITHM=UNDEFINED DEFINER=root@% SQL SECURITY DEFINER VIEW tematics_field AS select.... .
两个服务器都有一个mysql 5. 5. 2 x。而且两个服务器中用户是不同的。

xtfmy6hx

xtfmy6hx1#

我只有努力:

CREATE VIEW tematics_field AS select....

而且一切都是完美的工作和进口做得很好。

kiayqfof

kiayqfof2#

MySql错误:#1227 -拒绝访问;要执行此操作,您需要(至少一个)SUPER权限

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

kqhtkvqz

kqhtkvqz3#

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

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

tjvv9vkg4#

我面临着类似的事情。代替:

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

我用CURRENT_USER()替换了DEFINER,它成功了。

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

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

ttvkxqim

ttvkxqim5#

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
muk1a3rh

muk1a3rh6#

错误消息:

ERROR 1227 (42000) at line XXXX: Access denied; you need (at least one of) the SUPER privilege(s) for this operation

试试这个:

sed -i.bak 's/`root`@`%`/CURRENT_USER/g' /path/to/your.sql

注意:'root@%'是定义该视图的用户。
或在VIM中编辑sql文件:

:%s/`root`@`%`/CURRENT_USER/g

祝你好运!

相关问题