我目前正在转移我所有的'意见'从一个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。
4条答案
按热度按时间7gyucuyw1#
该用户不存在,因此您需要创建该用户,或者使用另一个存在且具有必要权限的用户。
ETD是在原始源处用作定义者的用户。
cnh2zyt32#
在MySQL
CREATE VIEW
语句中,DEFINER
是 * 可选的 *。您可以尝试修改陈述式,从陈述式中移除
DEFINER = 'user'@'host'
。这相当于在陈述式中指定
DEFINER = CURRENT_USER
。给定
SQL SECURITY DEFINER
,这将影响视图的安全上下文。如果要在视图定义中指定
DEFINER
(在CREATE VIEW
语句中),则MySQL中需要存在指定的用户。请注意,MySQL中的“用户”由用户名 、 和主机标识。
也就是说,
'etd'@'%'
是与'etd'@'localhost'
* 不同 * 的使用者。要创建用户,可以运行如下语句:
同样的用户还需要被授予对视图基础表的适当SELECT特权,
要在MySQL示例上创建用户,您需要将定义从另一个MySQL示例“复制”到另一个MySQL示例...
在“source”示例(其中存在我们要“复制”的
'etd'@'localhost'
用户)上,我们可以运行如下语句:返回的行很好地表示了我们需要在另一个MySQL示例上运行的语句,以便在那里创建用户。
6qfn3psc3#
您可以使用此命令获取用户和主机信息。如果您使用root作为用户,请尝试使用***root@localhost***
flseospp4#
只需将您的数据库与MySQL工作台连接,然后按照以下步骤操作-
1.转到“管理”选项卡
1.单击用户和权限
1.点击添加帐户按钮
1.在“登录”选项卡中的“添加帐户”页面上,添加具有相同用户名和密码的用户
1.转到“Administrative Roles(管理角色)”选项卡,选择DBA角色,然后单击“Apply(应用)”按钮,即可完成操作。