【问题标题】:“Error (1142): SHOW command denied to user…” when trying to restrict access to columns“错误 (1142): SHOW command denied to user...”尝试限制对列的访问时
【发布时间】:2018-08-29 14:34:00
【问题描述】:

我运行以下查询来创建一个用户,该用户限制他们可以在某个表中查看/编辑哪些列。该表具有我未授予任何访问权限的其他表的外键。我希望用户能够编辑 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';

查询运行并创建用户。我让用户使用 HeidiSQL 编辑此表中的数据。当我以用户身份登录时,唯一可见的表是 table1,正如预期的那样,但是当我单击该表时,我收到错误:

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

在“数据”下根本看不到任何数据

在 Stack Overflow 上提出了以下问题,但是没有一个建议的解决方案对我有用:

'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'@'%'

如果我运行,我会看到表中的列(但仍然无法查看任何数据):

SHOW COLUMNS FROM table1;

有谁知道为什么这个用户没有看到 table1 中的数据?

【问题讨论】:

    标签: mysql permission-denied user-permissions heidisql


    【解决方案1】:

    我设法找到了解决方案。

    我需要首先向用户“GRANT SHOW VIEW”,以便他们可以查看表中的数据。

    接下来,我更改了查询,将 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';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-08
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 2018-03-06
      • 2016-09-10
      • 2019-07-24
      相关资源
      最近更新 更多