我尝试以用户 postgres 身份运行 pgadmin3,但出现以下错误:
No protocol specified
Error: Unable to initialize gtk, is DISPLAY set properly?
命令pgadmin3
在 pavel(我的主要用户帐户)下运行良好。
关于这个问题的答案建议一些服务器连接魔术(不是我的情况 - 我尝试在本地主机上运行它),或设置 DISPLAY 变量。我在 pavel 和 postgres 下通过 printenv 检查了它,两者都是 :0。我使用技巧来查找哪些进程在两个用户下都设置了 DISPLAY 变量。对于 pavel,DISPLAY 值的列表很长:0(对于大多数进程,包括 pgadmin)或 :0.0(对于某些进程)。但是对于 postgres,列表中只有三四个进程。
这就是我卡住的地方:如何为进程设置环境变量(在本例中为 DISPLAY)?或者更好的是,对于应用程序/用户组合,以便进程从一开始就可以看到 DISPLAY 设置。我已经尝试在 ETC/ENVIRONMENT 中对 DISPLAY 进行硬编码,但没有任何改变 - 它会影响设置它的 DISPLAY 值(对于用户和进程),但不会影响用户运行的进程的可见性。
这听起来像是你
sudo
对postgres
用户然后试图从那里运行 Pgadmin。不要那样做。
以普通用户身份运行 PgAdmin,不带
sudo
. 您可能需要在数据库上为自己创建一个用户帐户和/或pg_hba.conf
首先进行编辑以允许连接,但一旦完成,您就可以使用 PgAdmin。