MySQL数据库权限问题

时间:2009-10-26 06:43:08

标签: mysql database permissions

我已经习惯了

的mysql用户权限
GRANT ALL PRIVILEGES ON db_base.phonebook TO db_user @'%' IDENTIFIED BY 'db_passwd';

以及影响某个用户如何与mysql交互的其他因素。我有一个由我运行的程序创建的数据库,它有自己的权限。我无法弄清楚如何编辑该数据库的权限。是的,措辞很差,所以我告诉你:

(root@localhost) [mysql]> SELECT host,db,user,select_priv,insert_priv FROM mysql.db;
+------+--------------------+------+-------------+-------------+
| host | db                 | user | select_priv | insert_priv |
+------+--------------------+------+-------------+-------------+
| %    | test               |      | Y           | Y           |
| %    | test\_%            |      | Y           | Y           |
| %    | lux_watertank_pmts | lux  | Y           | N           |
+------+--------------------+------+-------------+-------------+
3 rows in set (0.00 sec)

我想限制访问的test数据库。如何更改数据库的priv而不是用户?感谢您的帮助和理解。

2 个答案:

答案 0 :(得分:1)

MySQL使用分层访问控制模型,i。即您可以在全局,数据库,表甚至列级别上指定权限。

我认为你不能完全按照自己的意愿行事--MySQL的权限围绕着一个用户帐户。通过数据库设置权限意味着权限表必须以相反的方式查询,而不是。我尝试为用户使用%,但这也不起作用。

所以我认为你没有解决你的具体问题就会陷入困境。

至于权限:

虽然您可以使用GRANT语句手动修改它们,但我个人认为这样做很繁琐。相反,我建议您使用MySQL GUI Tools中的MySQL管理员工具。

如果您直接修改权限表 - 这可能但不一定建议 - 请记住您必须发出FLUSH PRIVILEGES命令才能使这些更改生效。

它将允许您以可视方式配置权限。我不记得你是否能提前看到GRANT陈述,但是你当然可以随后用SHOW GRANTS FOR user@'host'陈述来看看这些陈述。

如果您之前从未使用过此工具,请注意以下事项:您必须转到工具/选项菜单并启用“显示全局权限”,“显示架构对象权限“和”在用户列表中显示主机“以启用对更细粒度权限配置的完全访问权限 - 否则它将仅显示全局权限。

答案 1 :(得分:1)

我遇到了同样的问题(即想要限制对默认情况下对所有人开放的“测试”数据库的访问)。我能想到的最好的是从mysql.db中删除以下两行并重新启动mysql。

| %    | test               |      | Y           | Y           |
| %    | test\_%            |      | Y           | Y           |

我还没有尝试过,但我相信它会起作用。还有另一种方式吗?