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

标签 database postgresql ms-access frontend backend

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

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

谢谢!

最佳答案

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

简而言之,您可以让您的后端作为一个用户运行,该用户对相关表具有完全 Access 权限,并且当用户登录到该应用程序时,他们将使用一个连接到 Postgres权限被大大锁定的用户(例如,如果您只想能够执行 SELECT 以显示数据,则只读)。

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

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

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

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

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

当您需要更改数据时,您的后端可以专门使用具有更大 Access 权限的 super 用户

这里有一个链接,详细说明了创建只读 Postgres 用户(在这种情况下用于备份目的,但一般概念和SQL命令应该适用(忽略关于 pg_dump 的内容)。

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

关于database - 当 MS Access 用作前端而 PostgreSQL 用作后端时,如何隐藏/锁定链接的 PostgreSQL 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25004205/

相关文章:

javascript - 使用 Javascript Django 从数据库中的值中检索数据

具有动态表名的 Android Room Fetch 数据

node.js - 我正在使用 Node.js ORM Sequelize 及其命令行客户端,但我无法成功执行迁移

sql - 使用 Access 的 VBA 追加查询

json - 哪个数据库适合存储大型 JSON?

php - 代码无法将行插入MySQL且没有错误

postgresql - Postgres : how to add unique identifier to table

postgresql - Postgres 外部编辑器不在 savequit 上执行查询

c# - 如何在 C# 中将 Access 数据库文件、mdb 从程序文件复制到独立存储

python - 64 位 pyodbc 是否可以与 32 位 MS Access 数据库通信?