Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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 尝试限制对列的访问时出现“错误(1142):显示命令拒绝给用户…”_Mysql_Permission Denied_User Permissions_Heidisql - Fatal编程技术网

Mysql 尝试限制对列的访问时出现“错误(1142):显示命令拒绝给用户…”

Mysql 尝试限制对列的访问时出现“错误(1142):显示命令拒绝给用户…”,mysql,permission-denied,user-permissions,heidisql,Mysql,Permission Denied,User Permissions,Heidisql,我运行了以下查询来创建一个用户,该用户对在某个表中可以查看/编辑哪些列有限制。该表具有指向其他表的外键,我没有授予任何访问权限。我希望用户能够编辑“插入”下的列,并且对“选择”下的列具有只读访问权限 CREATE USER 'user'@'hostname'; GRANT SELECT (`Status`,`Number`,`Location`), INSERT (`Name`,`Address`,`Email Address`,_ `Home Number`,`Work Number`,`Mo

我运行了以下查询来创建一个用户,该用户对在某个表中可以查看/编辑哪些列有限制。该表具有指向其他表的外键,我没有授予任何访问权限。我希望用户能够编辑“插入”下的列,并且对“选择”下的列具有只读访问权限

CREATE USER 'user'@'hostname';
GRANT SELECT (`Status`,`Number`,`Location`), INSERT (`Name`,`Address`,`Email Address`,_
`Home Number`,`Work Number`,`Mobile Number`,`Date Available`) ON `project1`.`table1`_
 TO  'user'@'hostname' IDENTIFIED BY 'password';
查询运行并创建用户。我正在让用户使用HeidiSQL编辑此表中的数据。当我以用户身份登录时,唯一可见的表是table1,正如预期的那样,但是当我单击该表时,会出现错误:

/* SQL Error (1142): SHOW command denied to user 'user'@'<IP address different to hostname IP address>' for table 'table1' */
我得到:

GRANT USAGE ON *.* TO 'user'@'%' IDENTIFIED BY PASSWORD '*<password different to one set originally>'
GRANT SELECT (Status,Number,Location), INSERT (Name,Address,Email Address,Home Number,Work Number,Mobile Number,Date Available) ON `project1`.`table1` TO 'user'@'%'

有人知道这个用户为什么不能查看表1中的数据吗?

我设法找到了一个解决方案

首先,我需要向用户授予“显示视图”,以便他们可以查看表中的数据

接下来,我更改了我的查询,以便我将SELECT权限授予所有列,并将UPDATE权限授予所有列,但我希望保留为只读的列除外

以下是我运行的查询,该查询已成功运行:

CREATE USER 'user'@'localhost';

GRANT SHOW VIEW ON `project1`.`table1` TO  'user'@'localhost' IDENTIFIED BY 'password';

GRANT SELECT (`Status`,`Number`,`Location`,`Name`,`Address`,`Email Address`,`Home Number`,_
`Work Number`,`Mobile Number`,`Date Available`), UPDATE (`Name`,`Address`,`Email Address`,_
`Home Number`,`Work Number`,`Mobile Number`,`Date Available`) ON `project1`.`table1` TO _
'user'@'localhost' IDENTIFIED BY 'password';
SHOW COLUMNS FROM table1;
CREATE USER 'user'@'localhost';

GRANT SHOW VIEW ON `project1`.`table1` TO  'user'@'localhost' IDENTIFIED BY 'password';

GRANT SELECT (`Status`,`Number`,`Location`,`Name`,`Address`,`Email Address`,`Home Number`,_
`Work Number`,`Mobile Number`,`Date Available`), UPDATE (`Name`,`Address`,`Email Address`,_
`Home Number`,`Work Number`,`Mobile Number`,`Date Available`) ON `project1`.`table1` TO _
'user'@'localhost' IDENTIFIED BY 'password';