我有MS Access作为前端,PostgreSQL作为我的数据库的后端。所以我在PostgreSQL中设置了数据库,并使用ODBC驱动程序将表链接到MS Access。一切都很好,我可以在MS Access中更新表格,记录将出现在Postgres数据库中。
由于我仍然可以在MS Access中看到链接表,我觉得有些用户可以进入并手动修改表而无需填写正确的表单。是否可以隐藏表或锁定表,以便Access用户根本无法修改原始数据?如果没有,我该怎么做才能保证数据库的完整性。
谢谢!
答案 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 用户,但可以简单地锁定表格并让后端使用该用户具有足够的访问权限。