“Error (1142): SHOW command denied to user…” when trying to restrict access to columns
“Error (1142): SHOW command denied to user…” when trying to restrict access to columns
我 运行 下面的查询创建一个用户,限制他们可以在某个 table 中的哪些列 view/edit。 table 有其他 table 的外键,我没有授予任何访问权限。我希望用户能够编辑 INSERT 下的列,并且只对 SELECT.
下的列具有只读访问权限
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';
查询 运行s 并创建用户。我正在让用户使用 HeidiSQL 来编辑这个 table 中的数据。当我以用户身份登录时,正如预期的那样,唯一可见的 table 是 table1,但是当我单击 table 时,出现错误:
/* SQL Error (1142): SHOW command denied to user 'user'@'<IP address different to hostname IP address>' for table 'table1' */
并且在'Data'
下根本看不到任何数据
在 Stack Overflow 上提出了以下问题,但是 none 的建议解决方案对我有用:
'SHOW command denied to user' when setting up user permissions
如果我运行查询
SHOW GRANTS FOR CURRENT_USER;
我得到:
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'@'%'
如果我 运行 我可以查看 table 中的列(但仍然无法查看任何数据):
SHOW COLUMNS FROM table1;
有谁知道为什么此用户无法查看 table1 中的数据?
我设法找到了解决方案。
我需要首先 'GRANT SHOW VIEW' 给用户,这样他们才能查看 table 中的数据。
接下来,我更改了我的查询,以便我 g运行 获得了对所有列的 SELECT 权限,并且 g运行 获得了对所有列的更新权限,除了我想将 Read-Only 留给用户。
以下是我 运行 成功运行的查询:
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';
我 运行 下面的查询创建一个用户,限制他们可以在某个 table 中的哪些列 view/edit。 table 有其他 table 的外键,我没有授予任何访问权限。我希望用户能够编辑 INSERT 下的列,并且只对 SELECT.
下的列具有只读访问权限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';
查询 运行s 并创建用户。我正在让用户使用 HeidiSQL 来编辑这个 table 中的数据。当我以用户身份登录时,正如预期的那样,唯一可见的 table 是 table1,但是当我单击 table 时,出现错误:
/* SQL Error (1142): SHOW command denied to user 'user'@'<IP address different to hostname IP address>' for table 'table1' */
并且在'Data'
下根本看不到任何数据在 Stack Overflow 上提出了以下问题,但是 none 的建议解决方案对我有用:
'SHOW command denied to user' when setting up user permissions
如果我运行查询
SHOW GRANTS FOR CURRENT_USER;
我得到:
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'@'%'
如果我 运行 我可以查看 table 中的列(但仍然无法查看任何数据):
SHOW COLUMNS FROM table1;
有谁知道为什么此用户无法查看 table1 中的数据?
我设法找到了解决方案。
我需要首先 'GRANT SHOW VIEW' 给用户,这样他们才能查看 table 中的数据。
接下来,我更改了我的查询,以便我 g运行 获得了对所有列的 SELECT 权限,并且 g运行 获得了对所有列的更新权限,除了我想将 Read-Only 留给用户。
以下是我 运行 成功运行的查询:
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';