如何仅允许用户查看表中的某些行

时间:2013-10-23 07:53:04

标签: mysql sql

我目前有两张桌子。一个是帐户,一个是tbl_units_info。我的老板要我这样做,以便限制帐户读取表格中的某些行。坦率地说,我认为我的老板不知道他在说什么,但我希望这里有人可以证明我错了。

例如,accountname krikara只能查看TBB列为0909的tbl_units_info表的条目。

这甚至可能吗?要使krikara只能查看该表中TBID = 0909?

列的行

2 个答案:

答案 0 :(得分:1)

您可以通过向帐户提供视图的阅读权而不是整个表来解决此问题。

CREATE VIEW `tbl_units_info_krikara` AS
SELECT * FROM `tbl_units_ino` WHERE `TBID`='0909';

然后为您的用户分配相应的权限。

答案 1 :(得分:1)

由于SELECT权限具有表级别,因此无法在DBMS级别上明确实现。您不能限制行读取。我认为这很好 - 因为数据可以更改,所以一般来说行限制没有可靠的条件(因此,在DBMS级别上没有有效的实现)。

但是,你可以使用VIEW - 但它是一个中间点,不是常见的解决方案(我仍然认为它不会有助于跟踪行更改,但可能因为你的应用程序逻辑而错了)

你可以尝试在你的应用程序中实现它,但它仍然有我上面描述的问题:在表中,数据正在改变。跟踪所有更改可能会遇到麻烦。我认为您可以在两个(多个)表上分隔行,然后构建权限模型。但是 - 如果某些基本相似的实体必须具有不同的权限 - 可能您应该重新考虑应用程序安全模型吗?