从QGIS简化PostGIS身份验证过程


9

在QGIS中,我有一个项目,其中包含来自各种(〜15个)PostGIS数据库的数据,没有为每个连接存储登录凭据(身份验证用户/ pwd),如下所示。

在此处输入图片说明

现在,当另一个用户打开项目时,他(或她)必须输入所用EACH数据库的凭据:

在此处输入图片说明

我非常担心,合法地我的用户都不愿意接受15次输入他(或她)的凭据的权限(但是在企业环境中可能有数百名用户,接受成功是成功的关键)。

所以对我来说有两个问题:

  • 有没有一种方法可以根据全局项目变量来建议用户名,user_account_name并且
  • 有没有办法告诉QGIS将为第一个数据库连接输入的凭据也用于其他任何连接?

我无法估计是否可以按以下建议修改“输入凭据”对话框,但这是否可能?

在此处输入图片说明


所以只有“领域”在变化,而其他所有变量都保持不变?
LaughU

是的,在实际范围内,仅“ dbname”正在更改。全部都在同一台服务器上。
Jochen Schwarze

5
PostGIS是空间扩展。您有十几个PostgreSQL数据库。虽然您可能可以凑齐一个碎片,但实际上您应该拥有一个大型数据库。连接到三个以上仅仅是糟糕的应用程序/数据库设计。
文斯

3
很高兴...对不起,我的英语还不够好,所以我不能说清楚我的问题不是关于应用程序/数据库设计的。顺便说一句,我一直认为PostGIS 意味着 PostgreSQL,并且在QGIS中我们建立了PostGIS连接(请参见上面的屏幕截图)。虽然有些postgres人士说,在可能的情况下在不同的数据库中分发不同的内容是一种好习惯,但请允许我从您知道连接到三个以上数据库的应用程序设计不佳的地方参加?请提供相关文献参考!为什么是三个?
Jochen Schwarze

1
我无法向您介绍文献,但是一个好的解决方案是在同一数据库中使用单独的模式。
bugmenot123

Answers:


7

QGIS具有内置的身份验证系统。简单地说,您有一个受保护的数据库,其中所有凭证都存储在一个qgis-auth.db文件中,您可以将其发送给知道主密码的其他人:

 .qgis文件夹

创建新的PostGIS连接时,无需键入登录名/密码,而是可以从中选择qgis-auth.db(每个登录名/密码对都有一个用户友好名称)。

使用身份验证系统在QGIS中设置PostGIS连接

例如,我有一个包含多个图层的QGIS项目。每个层都是到远程PostGIS数据库的连接。每个数据库都有其自己的用户。当我打开该项目时,我必须打印一次主密码,然后所有层(数据库连接)开始工作。

我可以将此项目发送给我的同事,并提供我的qgis-auth.db文件。事先,我可能会从该文件中删除一些我不想共享的凭据。

将我的同事放到qgis-auth.db他的.qgis文件夹中之后(他可能会备份自己的文件),他打开项目,输入主密码,一切正常。

您每个会话输入一次主密码。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.