MySQL数据库的权限问题(MySQL Database Permission Question)

2019-09-28 21:42发布

我已经变得习惯于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数据库中,我想限制访问。 如何更改数据库而不是用户的私法的? 感谢您的帮助和理解。

Answer 1:

MySQL使用分层的访问控制模型,即你可以在全局,数据库,表和偶数列级别指定的权限。

我不认为你可以做你想做什么 - MySQL的特权各地的用户帐户旋转。 通过数据库设置权限就意味着表有特权到E查询反过来,他们不是。 我试图用一个%的用户,但也不能工作。

所以我觉得你被卡住没有解决您的具体问题。

至于一般的权限:

虽然你可以使用手动修改他们GRANT语句我个人觉得乏味这样做。 相反,我建议你在使用MySQL管理员工具的MySQL GUI工具 。

如果你直接修改权限表-这是可能的,但不一定是推荐的-记住,你必须发出一个FLUSH PRIVILEGES命令使这些更改生效。

它可以让你直观地配置权限。 我不记得了我的头顶,你是否甚至可以看到GRANT事先声明,但你当然可以总是看看这些后用SHOW GRANTS FOR user@'host'的语句。

你将不得不转到工具/选项菜单,并启用“ 显示全局权限 ”,“ 显示模式对象特权 ”和“用户列表显示主机 ”,使完全访问权限:如果你从未使用过的工具之前的一个警告更细粒度的权限配置 - 否则只会告诉你的全局权限。



Answer 2:

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

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

我还没有尝试过,但我相当肯定它会工作。 有另一种方式?



文章来源: MySQL Database Permission Question