如何让一个MySQL用户仅访问一个模式(schema)

6
我搜索了很多关于“如何只允许一个用户访问一个模式”的内容,但没有找到令人信服的解决方案。我已经阅读了有关GRANTREVOKE的文章,但是发现这些解决方案只适用于为特定用户授予或撤销特定表的权限。
我要寻找的是:当有多个用户时,每个用户都可以访问定义的模式,而其中一个用户将拥有对一个模式的完全访问权限。并且我不希望一个用户访问除了授权访问权限以外的其他模式。
请建议如何使用GRANTREVOKE>来实现这一点?
2个回答

9
  • 将你的YOUR_PARTICULAR_SCHEMA所有权限授予一个名为USERNAME的特定用户,该用户来自特定的IP地址(在本例中为xxx.xxx.xxx.xxx)

GRANT ALL PRIVILEGES ON YOUR_PARTICULAR_SCHEMA.* TO 'USERNAME'@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

  • 将你的YOUR_PARTICULAR_SCHEMA所有权限授予一个名为USERNAME的特定用户,该用户来自任何IP地址(使用通配符%)

GRANT ALL PRIVILEGES ON YOUR_PARTICULAR_SCHEMA.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

  • 将你所有Schemas的所有权限授予一个名为USERNAME的特定用户,该用户来自特定的IP地址(在本例中为1.2.3.4)

GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

  • 将你所有Schemas的所有权限授予一个名为USERNAME的特定用户,该用户来自任何IP地址(使用通配符%)

GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

注意:您的情况属于前两种情况之一。根据您的选择,可以选择其中任何一种。

编辑:如果您想从先前授予权限的用户中删除权限,则使用REVOKE命令。

REVOKE会删除权限,但不会删除mysql.user表条目。要完全删除用户帐户,请使用DROP USER。


1
谢谢。第二个选项对我有用。GRANT ALL PRIVILEGES ON YOUR_PARTICULAR_SCHEMA.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;这帮助我创建了两个不影响彼此数据库结构的具有访问两个数据库权限的不同用户。 当尝试使用用户一登录到数据库二时,它会给出“拒绝访问”错误。这正是所需的。 - Mandar Pandit
很高兴听到它起作用了。不客气 :) @MandarPandit - 1000111

0

这里是如何授予一个MySQL用户仅访问一个模式的方法

Workbench中的管理选项卡上 转到“Users and Privileges” 输入图像描述 选择您需要的用户 转到“Administrative Roles”选项卡并清除所有角色和权限 转到“Schema Privileges”,点击“Add Entry...”按钮 然后选择模式单选按钮和您想要的模式,点击“确定”按钮。 输入图像描述 返回到“Schema Privileges”选项卡,选择刚刚添加的模式条目,并选择您希望为用户授予的权限。

最后点击“应用”。


你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接