【问题标题】:How to hide/lock linked PostgreSQL tables when MS Access is used as a front end and PostgreSQL as backend?当 MS Access 用作前端而 PostgreSQL 用作后端时,如何隐藏/锁定链接的 PostgreSQL 表?
【发布时间】:2014-09-20 04:04:13
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: database postgresql ms-access frontend backend


    【解决方案1】:

    我建议查看 Postgres privileges 作为锁定表的一种方式。

    简而言之,您可以让您的后端作为一个对相关表具有完全访问权限的用户运行,并且当用户登录到应用程序时,他们将使用一个连接到 Postgres权限被更多锁定的用户(例如,仅当您只想能够对表面数据执行 SELECTs 时才读取)。

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

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

    这将首先删除用户 joe 对表 accounts 的所有权限,然后只允许该表的 SELECT 权限。

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

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

    当您需要更改数据时,您的后端可以专门使用具有更大访问权限的各种高级用户。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      相关资源
      最近更新 更多