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

wrrgggsh  于 2022-11-09  发布在  PHP
关注(0)|答案(4)|浏览(156)

我目前正在转移我所有的'意见'从一个VPS与123-reg托管到另一个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更改为MySQL数据库上的root和数据库用户名,但它没有修复错误。
我可以尝试什么?
我以root用户身份登录到phpMyAdmin。

7gyucuyw

7gyucuyw1#

该用户不存在,因此您需要创建该用户,或者使用另一个存在且具有必要权限的用户。
ETD是在原始源处用作定义者的用户。

cnh2zyt3

cnh2zyt32#

在MySQL CREATE VIEW语句中,DEFINER是 * 可选的 *。
您可以尝试修改陈述式,从陈述式中移除DEFINER = 'user'@'host'
这相当于在陈述式中指定DEFINER = CURRENT_USER
给定SQL SECURITY DEFINER,这将影响视图的安全上下文。
如果要在视图定义中指定DEFINER(在CREATE VIEW语句中),则MySQL中需要存在指定的用户。
请注意,MySQL中的“用户”由用户名 和主机标识。
也就是说,'etd'@'%'是与'etd'@'localhost' * 不同 * 的使用者。
要创建用户,可以运行如下语句:

GRANT USAGE ON *.* TO 'etd'@'localhost' IDENTIFIED BY 'mysecretpassword'

同样的用户还需要被授予对视图基础表的适当SELECT特权,
要在MySQL示例上创建用户,您需要将定义从另一个MySQL示例“复制”到另一个MySQL示例...
在“source”示例(其中存在我们要“复制”的'etd'@'localhost'用户)上,我们可以运行如下语句:

SHOW GRANTS FOR 'etd'@'localhost'

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

6qfn3psc

6qfn3psc3#

select user, host from mysql.user;

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

flseospp

flseospp4#

只需将您的数据库与MySQL工作台连接,然后按照以下步骤操作-
1.转到“管理”选项卡
1.单击用户和权限
1.点击添加帐户按钮
1.在“登录”选项卡中的“添加帐户”页面上,添加具有相同用户名和密码的用户
1.转到“Administrative Roles(管理角色)”选项卡,选择DBA角色,然后单击“Apply(应用)”按钮,即可完成操作。

相关问题