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

Database 当MS Access用作前端,PostgreSQL用作后端时,如何隐藏/锁定链接的PostgreSQL表?,database,postgresql,ms-access,frontend,backend,Database,Postgresql,Ms Access,Frontend,Backend,我的数据库前端是MS Access,后端是PostgreSQL。因此,我在PostgreSQL中设置了数据库,并使用ODBC驱动程序将这些表链接到MS Access。一切都很好,我可以在MS Access中更新表,记录将出现在Postgres数据库中 由于我仍然可以在MS Access中看到链接表,我觉得有些用户可以进入并手动修改表,而无需填写适当的表单。是否可以隐藏表或锁定表,以便Access用户根本无法修改原始数据?如果没有,我可以做些什么来确保数据库的完整性 谢谢 我建议把研究Postgr

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

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


谢谢

我建议把研究Postgres作为锁定表格的一种方式

简言之,您可以让您的后端作为一个对相关表具有完全访问权限的用户运行,当用户登录到应用程序时,他们将使用一个权限更严格的用户连接到Postgres,例如,如果您只想能够选择显示数据,则可以使用只读

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

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

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

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

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

这里有一个链接详细介绍了如何创建一个只读的Postgres用户,以便在本例中进行备份,但是一般的概念和SQL命令应该适用,只需忽略关于pg_dump的内容即可

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

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