我已经习惯了
的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而不是用户?感谢您的帮助和理解。
答案 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 |
我还没有尝试过,但我相信它会起作用。还有另一种方式吗?