【问题标题】:Mysql users can select from tables but not viewsMysql 用户可以从表中选择,但不能从视图中选择
【发布时间】:2012-03-23 10:39:07
【问题描述】:

我有一个 mysql 数据库,我在该数据库上创建用户,并授予他们对特定数据库的选择、更新、插入和删除权限。

数据库包含表和视图。由于某种原因,这些创建的用户在尝试从视图中进行选择时会收到以下错误。

Access denied for user 'someuser'@'%' (using password: YES)

SELECT * FROM (`someview`) WHERE `somecolumn` = 0

但是,从同一数据库中的表中选择时,我没有收到此错误。

我已将此应用程序部署到多个地方,并且它在其他任何地方都可以使用,包括使用 amazon rds。这个特定的实例是运行在 amazon ec2 上的 mysql 服务器。

【问题讨论】:

  • 如果您将视图上的选择明确授予用户怎么办?

标签: mysql amazon-ec2


【解决方案1】:

解决了。错误消息具有误导性。

原因是作为视图定义者的用户不再存在,而不是从视图中进行选择的用户。

我重新创建了这个用户,一切都很好。

【讨论】:

  • 我必须重新创建用户并授予它访问视图中使用的表的权限。
  • 另一种解决方案可能是将视图 DDL 从 CREATE ... DEFINER = 'root'@'%'' SQL SECURITY DEFINER 更改为 SECURITY INVOKER
  • @allofmex 那该怎么做呢?
【解决方案2】:

您遇到这种情况的可能原因:

  • 可能是您用来访问此表的用户在此特定表上没有足够的权限。
  • 可能是用户名或密码不匹配。
  • 可能是指定主机的用户不存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 2016-02-27
    • 2023-03-11
    • 1970-01-01
    • 2012-09-12
    • 2016-05-24
    • 1970-01-01
    相关资源
    最近更新 更多