【问题标题】:Grant a user permission to only view a MySQL view and nothing else授予用户权限以仅查看 MySQL 视图而不查看其他内容
【发布时间】:2011-03-07 17:22:33
【问题描述】:

这个问题原本是使用 MySQL 5.1.44,但也适用于 MySQL 8.0+。

假设我有一个表,其中包含由我的应用程序的不同用户插入的记录。如何授予特定用户访问权限以仅查看他/她在该表中的记录?我想过用他/她的记录创建一个VIEW,但我不知道如何创建一个只能看到VIEW的MySQL用户。

那么,是否可以创建一个只能访问单个VIEW 的 MySQL 用户?是否也可以让该用户拥有对该VIEW 的只读访问权限?

谢谢!

PS:在我的示例中,我所称的用户实际上是希望通过自己的应用程序访问其记录的子公司。

【问题讨论】:

  • 没有触发器的视图是只读的。
  • 要使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系。还有某些其他构造使视图不可更新。

标签: mysql view permissions database-permissions grant


【解决方案1】:

GRANT SELECT ON database1.view1 TO 'someuser'@'somehost';

【讨论】:

  • 请注意,发出创建视图命令的用户(称为视图定义器)对此也有影响。如果定义者!= 使用该视图的用户,那么这可能会很混乱。例如,如果定义者仅对基础表具有选择权限,而另一个用户对视图具有更新权限,则尝试更新视图将导致权限被拒绝错误。
【解决方案2】:

另外

GRANT SELECT ON <database_name>.<view_name>
TO <user>@<host>

最好也这样做

GRANT SHOW VIEW
ON <database_name>.<view_name> TO <user>@<host>

以便很多 SQL UI 工具可以获取视图定义并为视图正常工作。

【讨论】:

【解决方案3】:
GRANT SELECT ON <database name>.<view name>
TO <user>@<host> IDENTIFIED BY '<password>'

来源:MySQL Documentation

【讨论】:

    【解决方案4】:

    我相信最初的问题实际上是询问如何将行限制为给定用户拥有的行。 (为每个用户创建一个视图,然后仅授予该视图,这似乎是一种解决方法。)

    您可以通过将 user() 引用插入数据表,然后对其进行过滤来做到这一点。

    使用 MySQL 5.6。创建一个视图,将 SELECT 限制为当前用户拥有的记录:

    -- check the current user
    select user();
    
    create table t1 (myId int, mydata varchar(200), myName varchar(200));
    
    insert t1 select 1, 'my data yes', user();
    insert t1 select 2, 'my data yes2', user();
    insert t1 select 3, 'my data no', 'joe';
    
    select * from t1;
    
    create or replace view v1 AS
    select * from t1 where myName = user();
    
    select * from v1;
    

    【讨论】:

      【解决方案5】:

      如果你想让视图只读,我怀疑你这样做。然后您应该使用 ALGORITHM = TEMPTABLE 子句创建视图。

      这将使视图只读,因为它必须创建一个临时表。

      另一种实现只读的方法(这取决于您的数据)是粘贴聚合函数。例如,如果您有一个基于表格并显示所有列的视图,那么您可以将 distinct 粘贴到选择上。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-25
        • 2020-12-07
        • 2019-10-03
        相关资源
        最近更新 更多