Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL数据库权限问题_Mysql_Database_Permissions - Fatal编程技术网

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,

我已经习惯了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)

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

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