#1449 - phpMyAdmin(指定为定义者的用户('***'@'localhost')不存在)

时间:2016-10-07 13:17:10

标签: php mysql phpmyadmin

我目前正在将我的所有“观点”从123-reg托管的VPS转移到Heart Internet提供的另一个VPS。

以下是视图:

CREATE ALGORITHM=UNDEFINED DEFINER=`etd`@`localhost` SQL SECURITY DEFINER VIEW `vShoppingCart` AS SELECT `VCoursesUOC`.`Distributor` AS `Distributor`,`VCoursesUOC`.`Company` AS `Company`,`VCoursesUOC`.`Title` AS `Title`,`VCoursesUOC`.`Price` AS `Price`,(`VCoursesUOC`.`Price` / 5) AS `VAT`,(`VCoursesUOC`.`Price` * 1.2) AS `WithVAT`,(sum(`VCoursesUOC`.`Price`) * 1.2) AS `Total`,count(`VCoursesUOC`.`CourseId`) AS `NoOfCourses` FROM `VCoursesUOC` WHERE (`VCoursesUOC`.`Payment` = 'Unpaid') GROUP BY `VCoursesUOC`.`Title`,`VCoursesUOC`.`Distributor`,`VCoursesUOC`.`Company`,`VCoursesUOC`.`Price`

每次我尝试运行此操作时都会出现以下错误:

#1449 - The user specified as a definer ('etd'@'localhost') does not exist

我尝试将etd更改为root用户并在MySQL数据库上更改数据库用户名,但它不能解决错误。

我可以尝试什么?

我以root用户身份登录phpMyAdmin。

3 个答案:

答案 0 :(得分:0)

用户不存在,因此您需要创建它或使用另一个存在且具有必要权限的用户。

etd是在原始来源用作定义者的用户。

答案 1 :(得分:0)

MySQL DEFINER声明中的CREATE VIEW可选

您可以尝试修改语句以从语句中删除DEFINER = 'user'@'host'

这相当于在语句中指定DEFINER = CURRENT_USER

鉴于SQL SECURITY DEFINER,这将影响视图的安全上下文。

如果要在视图定义中指定DEFINER(在CREATE VIEW语句中),则指定的用户需要存在于MySQL中。

请注意,MySQL中的“用户”由用户名以及主机标识。

也就是说,'etd'@'%'与<{1}}不同的用户。

要创建用户,您可以运行如下语句:

'etd'@'localhost'

同样的用户还需要在视图底层的表上被授予适当的SELECT权限,

要在MySQL实例上创建用户,您要将定义从另一个MySQL实例“复制”到另一个...

在“source”实例(我们想要“复制”的GRANT USAGE ON *.* TO 'etd'@'localhost' IDENTIFIED BY 'mysecretpassword' 用户)存在的地方,我们可以运行如下语句的语句:

'etd'@'localhost'

由它返回的行很好地表示了我们需要在另一个MySQL实例上运行的语句,以便在那里创建用户。

答案 2 :(得分:0)

  select user, host from mysql.user; 

您可以使用此命令来获取用户和主机信息。如果您以root用户身份使用,请尝试使用 root @ localhost