当MS Access用作前端而PostgreSQL用作后端时,如何隐藏/锁定链接的PostgreSQL表?

时间:2014-07-28 20:56:06

标签: database postgresql ms-access frontend backend

我有MS Access作为前端,PostgreSQL作为我的数据库的后端。所以我在PostgreSQL中设置了数据库,并使用ODBC驱动程序将表链接到MS Access。一切都很好,我可以在MS Access中更新表格,记录将出现在Postgres数据库中。

由于我仍然可以在MS Access中看到链接表,我觉得有些用户可以进入并手动修改表而无需填写正确的表单。是否可以隐藏表或锁定表,以便Access用户根本无法修改原始数据?如果没有,我该怎么做才能保证数据库的完整性。

谢谢!

1 个答案:

答案 0 :(得分:0)

我建议您查看 Postgres privileges,以此来锁定表格。

简而言之,您可以将后端作为一个对相关表具有完全访问权限的用户运行,当用户登录到应用程序时,他们将使用以下内容连接到 Postgres 其权限被严格锁定的用户(例如,只有在您希望能够SELECT表面数据时才读取)。

例如,您可以针对 Postgres 服务器运行以下SQL:

REVOKE ALL ON accounts FROM joe;
GRANT SELECT ON accounts TO joe;

首先会删除帐户用户 joe 的所有权限,然后仅允许该表的SELECT个权限。

您可以为要锁定的所有执行类似操作。您还需要对这些表使用的序列执行相同的操作。

您可能希望创建一个特殊的 readonly 用户,该用户只具有全面的读取权限,并使用这些凭据显示 Postgres 数据供用户访问。

当您需要更改数据时,您的后端可以专门使用具有更多访问权限的 power 用户。

这是一个详细创建 readonly Postgres 用户的链接(在这种情况下用于备份,但是一般概念和 SQL 命令应该适用(只是忽略关于 pg_dump 的东西)。

如果您不关心用户是否能够通过up而不是以授权方式修改这些表中的数据,但只关心使用它们,比如说, psql 要进入并更新它们,那么您可能不需要 readonly 用户,但可以简单地锁定表格并让后端使用该用户具有足够的访问权限。