MySQL数据库权限问题
我已经习惯了mysql的用户权限MySQL数据库权限问题,mysql,database,permissions,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,
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)
我要限制访问的
测试
数据库。如何更改数据库而不是用户的权限?感谢您的帮助和理解。MySQL使用分层访问控制模型,即。E您可以指定全局、数据库、表甚至列级别的权限
我不认为你能完全做你想做的事情——MySQL的特权围绕着一个用户帐户。按数据库设置权限意味着必须反过来查询特权表,而事实并非如此。我尝试为用户使用%s,但也不起作用
因此,我认为你无法解决你的具体问题
关于一般的权限:
虽然您可以使用GRANT
语句手动修改它们,但我个人觉得这样做很乏味。相反,我建议您使用MySQL管理员工具
如果您直接修改特权表(这是可能的,但不一定推荐),请记住您必须发出FLUSH privileges
命令才能使这些更改生效
它将允许您直观地配置权限。我不记得你是否能提前看到GRANT
语句,但你当然可以在以后使用SHOW GRANTS FOR user@/host'
语句查看这些语句
如果您以前从未使用过该工具,请注意:您必须转到“工具/选项”菜单并启用“显示全局权限”、“显示架构对象权限”和“在用户列表中显示主机”启用对细粒度权限配置的完全访问-否则它将只显示全局权限。我遇到了相同的问题(即希望限制对默认情况下对所有人开放的“测试”数据库的访问)。我能想到的最好办法是从mysql.db中删除以下两行并重新启动mysql | % | test | | Y | Y | | % | test\_% | | Y | Y | |%|测试| Y | Y| |%|测试\|%| Y | Y|
我还没有试过,但我相当肯定它会起作用。还有其他方法吗?因此,显示“用户”@“主机”的授权将显示主机上用户的授权,而不是独立于用户或主机的数据库的权限。就像你说的,分层控制把我搞糊涂了。我可以设置用户/主机权限,但如何编辑数据库权限?直接编辑mysql.db表?我不认为您可以这样做-mysql的权限围绕着用户帐户。另一种方式意味着表是以另一种方式查询的,而它们可能不是。我尝试为用户使用%,但也不起作用。根据前面的两条注释修改了我的答案。在手动编辑
db
或user
表后,您需要调用FLUSH PRIVILEGES