我已经搜索了很多关于"如何仅允许One Schema访问一个用户"但是没有找到任何令人信服的解决方案。我已阅读有关GRANT
和REVOKE
的信息,但发现解决方案如授予或撤消特定用户对特定表的权限。
我正在寻找的是,当拥有多个用户时,每个用户都可以访问已定义的架构,并且一个用户将拥有对一个架构的完全访问权限。 并且我不希望一个用户访问其他Schema,除了给出访问权限的用户。
请建议如何准确使用GRANT
或REVOKE
来执行此操作?
答案 0 :(得分:1)
将YOUR_PARTICULAR_SCHEMA
的所有访问权限授予特定用户
来自特定USERNAME
的用户IP ADDRESS (in this case 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 ADDRESS (use wildcard operator %)
:
GRANT ALL PRIVILEGES ON YOUR_PARTICULAR_SCHEMA.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
将所有Schemas
的所有访问权限授予特定内容
来自特定USERNAME
的用户IP ADDRESS (in this case 1.2.3.4)
:
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
将所有Schemas
的所有访问权限授予特定内容
来自任何USERNAME
的用户名为IP ADDRESS (use wildcard operator %)
:
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
注意:您的方案位于前两种情况。您可以根据自己的选择选择其中任何一个。
编辑:如果您要删除之前已被授予权限的用户的权限,请使用REVOKE命令。
REVOKE删除权限,但不删除mysql.user表条目。 要完全删除用户帐户,请使用DROP USER