将 db_user 限制为单个 db_table

Restrict db_user to single db_table

我有一个名为 vendzvtq_accounts 的数据库和一个名为 "netflix" 的 table: 在数据库中,用户 vendzvtq_username 拥有 SELECT 权限。

我需要限制vendzvtq_username,让他只能访问netflix table,稍后我会添加另外2个用户并限制他们管理其他table,但是每个用户总是 1 table。

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

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

并出现此错误(无法 post 图片):

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

所以我搜索了错误 #1142,结果是这样的:MySQL Error: #1142 - SELECT command denied to user

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

那我该怎么办?

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

与您手动或您的应用程序发出 GRANT SELECT ... 请求的数据库用户需要具有 GRANT 权限,至少在包含 [=28= 的数据库(模式)上] 你提到。

像这样的应用程序需要至少两个不同的用户名才能正常工作。尝试仅使用一个用户名来执行此操作没有任何意义。

一个是管理员用户,从中执行访问授权和table创建等操作。该用户需要像 GRANTCREATE 以及 SELECT.

这样的权限

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