由于诸如 PostgreSQL(和 PostGIS)之类的重量级数据库的安全功能,我最大的恐惧之一是被锁定在我自己的数据之外。虽然我可以以管理员身份登录,但我想正确地做事并创建具有定义角色的用户。不幸的是,在我的初步测试中,我从未能够让它可靠地工作。我显然不理解 pgAdmin III 管理的 PostgreSQL 安全模型。
问题:
在 ms-access 中,如果创建了一个名为 'ted' 的用户并提供了密码,然后被删除,然后重新创建了一个名为 'ted' 的用户。第一个 ted 和第二个 ted 不一样。除了可见名称之外,还有一个隐藏的唯一代码,每次创建用户时都会生成该代码。这使得无法重新创建已删除的用户。我只是想知道 PostgreSQL 是否有这样的隐藏逻辑,可以欺骗新用户。
我遇到的关键问题是,当我通过 PgAdmin III 为特定数据库上的用户定义权限时,我无法使用 QGIS 中的用户名和密码连接到数据库。
目前,我正在使用 SpatialLite 来避免这个问题。
该文件应涵盖相当不错。具体见pg_hba.conf
。很难制定关于安全的“简单”指南,因为如果您以错误的方式进行简化,就会导致错误。
只要您能够编辑pg_hba.conf
和重新加载服务器,就很简单。只需添加一个pg_hba.conf
带有trust
身份验证的条目,重新加载 PostgreSQL(pg_ctl reload
,,/etc/init.d/postgresql reload
等等),更改密码,然后pg_hba.conf
恢复原状。
可以通过trust
在pg_hba.conf
. 使用身份验证进行连接通常要明智得多,但这仅适用于 unix 系统。peer
local
用户是与刚刚角色LOGIN
属性。角色在服务器上是全局的。GRANT
对用户/角色的大多数权利都特定于特定数据库或数据库中的对象。请参阅该GRANT
命令的文档。
“诡计?”。我想您会想在https://dba.stackexchange.com/上发布一个新的、更详细和具体的问题,其中包含详细信息,包括确切的命令 run、确切的错误消息等。
我有点惊讶您期望删除然后重新创建用户会保留他们的设置。这将为巨大的安全漏洞创造机会。系统管理员joe
离开,您删除他们的帐户。新数据输入joe
开始,您创建他们的帐户。哎呀!新乔拥有完全不同的老乔的所有权利。
如果你删除一个表然后重新创建它,它是否仍然有它的内容?为什么用户/角色会有所不同?
如果您不想删除用户帐户,请不要删除用户帐户。通过REVOKE
对CONNECT
数据库的权限、更改密码等来禁用它。