被锁定在 PostgreSQL 数据库之外

And*_*ewM 1 postgresql

由于诸如 PostgreSQL(和 PostGIS)之类的重量级数据库的安全功能,我最大的恐惧之一是被锁定在我自己的数据之外。虽然我可以以管理员身份登录,但我想正确地做事并创建具有定义角色的用户。不幸的是,在我的初步测试中,我从未能够让它可靠地工作。我显然不理解 pgAdmin III 管理的 PostgreSQL 安全模型。
问题:

  1. 是否有在 PostgreSQL 中设置角色和用户的简单指南?
  2. 在丢失密码的情况下可以恢复数据吗?
  3. PostgreSQL 可以像 ms-access 一样在关闭安全性的情况下使用吗?
  4. 在 PostgreSQL 安全模型中,用户是在服务器级别创建的,并且可以在服务器中列出的每个数据库中分配不同的角色?
  5. 创建用户和角色有技巧吗(见下文)?

在 ms-access 中,如果创建了一个名为 'ted' 的用户并提供了密码,然后被删除,然后重新创建了一个名为 'ted' 的用户。第一个 ted 和第二个 ted 不一样。除了可见名称之外,还有一个隐藏的唯一代码,每次创建用户时都会生成该代码。这使得无法重新创建已删除的用户。我只是想知道 PostgreSQL 是否有这样的隐藏逻辑,可以欺骗新用户。

我遇到的关键问题是,当我通过 PgAdmin III 为特定数据库上的用户定义权限时,我无法使用 QGIS 中的用户名和密码连接到数据库。

目前,我正在使用 SpatialLite 来避免这个问题。

Cra*_*ger 5

  1. 文件应涵盖相当不错。具体见pg_hba.conf。很难制定关于安全的“简单”指南,因为如果您以错误的方式进行简化,就会导致错误

  2. 只要您能够编辑pg_hba.conf和重新加载服务器,就很简单。只需添加一个pg_hba.conf带有trust身份验证的条目,重新加载 PostgreSQL(pg_ctl reload,,/etc/init.d/postgresql reload等等),更改密码,然后pg_hba.conf恢复原状。

  3. 可以通过trustpg_hba.conf. 使用身份验证进行连接通常明智得多,但这仅适用于 unix 系统。peerlocal

  4. 用户与刚刚角色LOGIN属性。角色在服务器上是全局的。GRANT对用户/角色的大多数权利都特定于特定数据库或数据库中的对象。请参阅该GRANT命令的文档。

  5. “诡计?”。我想您会想在https://dba.stackexchange.com/上发布一个新的、更详细和具体的问题,其中包含详细信息,包括确切的命令 run确切的错误消息等。

我有点惊讶您期望删除然后重新创建用户会保留他们的设置。这将为巨大的安全漏洞创造机会。系统管理员joe离开,您删除他们的帐户。新数据输入joe开始,您创建他们的帐户。哎呀!新乔拥有完全不同的老乔的所有权利。

如果你删除一个表然后重新创建它,它是否仍然有它的内容?为什么用户/角色会有所不同?

如果您不想删除用户帐户,请不要删除用户帐户。通过REVOKECONNECT数据库的权限、更改密码等来禁用它。