【问题标题】:Restrict db_user to single db_table将 db_user 限制为单个 db_table
【发布时间】:2015-03-07 21:27:12
【问题描述】:

我有一个名为 vendzvtq_accounts 的数据库和一个名为“netflix”的表: 在数据库中,用户 vendzvtq_username 具有 SELECT 权限。

我需要限制vendzvtq_username,以便他只能访问netflix 表,我稍后会添加2 个其他用户并限制他们管理其他表,但每个用户始终是1 个表。

我搜索并找到了这个上一个问题 How can I restrict a MySQL user to a particular tables 这似乎正是我想要的,所以我执行了查询:

GRANT SELECT ON vendzvtq_accounts.netflix TO vendzvtq_username@'%'    

并收到此错误(无法发布图片):

http://i.imgur.com/bHblFbL.png

所以我搜索了错误 #1142,结果如下:MySQL Error: #1142 - SELECT command denied to user

但用户在我的数据库中已经拥有 SELECT 权限: http://i.gyazo.com/7af43ad6f8718a31dae3bb0a040568ac.png

那我该怎么办?

【问题讨论】:

  • 您尝试使用哪个用户(哪个管理用户)发出GRANT SELECT ... 命令?您收到的错误消息告诉我们管理用户无权发出GRANT 命令。
  • 我猜它总是 vendzvtq_username,它是唯一在数据库中拥有权限的用户:i.imgur.com/S6MWfRg.png 我还通过主机控制面板中的 phpmyadmin 链接连接到数据库。

标签: mysql database


【解决方案1】:

您的#1142 error message says MySQL has deniedGRANT SELECT... 请求,因为尝试这样做的用户没有这样做的权限。 (您找到的 StackOverflow 页面与您的情况无关,因为它是关于 SELECT 失败,而不是 GRANT)。

您手动或您的应用程序向其发出GRANT SELECT ... 请求的数据库用户至少需要在包含您提到的表的数据库(架构)上具有GRANT 权限。

这样的应用程序至少需要两个不同的用户名才能正常工作。尝试只使用一个用户名这样做是没有意义的。

一个是经理用户,从那里执行访问授权和表创建等操作。该用户需要像 GRANTCREATE 以及 SELECT 这样的 privs。

另一个(可能有很多)是受限访问用户——被授予访问权限的用户。

【讨论】:

  • 感谢您的回答,那么我应该怎么做才能为我访问数据库的经理用户添加更多权限,以限制 vendzvtq_accounts 中的 vendzvtq_username?签入information_schemai.gyazo.com/b77465de9ffd3a539b640ea481a3e8ad.png我找到了这个表gyazo.com/ab14e80e75961f8332122984fe8ae746但是还是不知道怎么提升权限
  • 向您的托管服务提供商寻求帮助。通常在控制面板中有一些用于此目的的界面。
  • 非常感谢,希望能解决这个问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
相关资源
最近更新 更多