MySql:某些查询产生:SQLSTATE[28000]:无效授权规范:1045拒绝用户访问

MySql:某些查询产生:SQLSTATE[28000]:无效授权规范:1045拒绝用户访问,mysql,Mysql,我刚刚将应用程序移动到复制数据库,对于一些(但不是全部)查询,我收到以下错误消息: SQLSTATE[28000]: Invalid authorization specification: 1045 Access denied for user 许多其他查询都可以工作,并且检查凭据确实是正确的,因为它们适用于大多数查询 鉴于大多数查询都是成功的,您知道是什么导致了此错误消息吗?答案: 正在查询并失败的“表”实际上是视图 这些视图是用 CREATE DEFINER="user"@"10.10.

我刚刚将应用程序移动到复制数据库,对于一些(但不是全部)查询,我收到以下错误消息:

SQLSTATE[28000]: Invalid authorization specification: 1045 Access denied for user
许多其他查询都可以工作,并且检查凭据确实是正确的,因为它们适用于大多数查询

鉴于大多数查询都是成功的,您知道是什么导致了此错误消息吗?

答案:

正在查询并失败的“表”实际上是视图

这些视图是用

CREATE DEFINER="user"@"10.10.%.%" SQL SECURITY DEFINER VIEW view_name ...
将应用程序更改为另一个复制数据库后,此新数据库上不存在具有相同主机的定义者。用户是“user”@“10.20.%.%.”,而不是“user”@“10.10.%.”

因此,定义器在此数据库中不存在,并且由于SQL安全设置为definer,因此无法访问该视图

在本例中,我使用其他用户重新创建了视图,并将安全性设置为

... SQL SECURITY INVOKER ...

在我的db权限方案环境中,调用者将拥有足够的权限,因此现在所有查询都可以工作

谢谢,我也有同样的问题。看完这篇文章后,我重新创建了视图,一切又恢复了正常。谢谢。重新创建视图也解决了我的问题。