5

我有一个表格,其中有一列我想阻止某些用户看到。我知道我应该能够使用视图来执行此操作,即有一个排除特定列的视图,并拒绝访问表但允许访问视图(注意,用户不需要能够更新表/看法)。

但是,我确实希望允许对该字段进行相等查询。如:

SELECT * FROM some_table_or_view WHERE hidden_field = 'some_value';

澄清:

  • 不可能hidden_field在一般查询中返回值
  • hidden_field应该可以在值上运行带有约束(最好只有等式约束)的查询

这可能吗?

(编辑:如果在 Mysql 以外的 dbms 中有解决方案,我也很高兴听到这个消息)。

4

2 回答 2

4

您可以创建一个存储过程,该过程将返回您允许它返回的所有字段,然后您可以将 hidden_​​value(过滤条件)作为参数传递。

禁止您的数据库用户访问该表,但允许他们调用存储过程。

当然,如果您对表有多种类型的查询,您将不得不创建多个存储过程。但至少它解决了你的权利问题。

于 2012-04-16T14:02:57.660 回答
0

不它不是。为用户提供使用 hidden_​​value 列过滤结果的可能性意味着他们具有选择权限,这也意味着他们可以看到该列并因此选择它。这里http://dev.mysql.com/doc/refman/5.1/en/grant.html 是您可以授予或不授予 mySQL 中的用户的权限的列表。

于 2012-04-16T13:59:54.330 回答