无法登录phpPgAdmin


10

我正在尝试在测试机上设置phpPgAdmin,以便可以与PostgreSQL进行交互,而不必始终使用psqlCLI。我通过RPM信息库安装了PostgreSQL 9.1,而我则“手动”安装了phpPgAdmin 5.0.4(通过从phpPgAdmin网站提取档案)。作为记录,我的主机操作系统是CentOS 6.2。

我已经进行了以下配置更改:

PostgreSQL的

  • 在内部pg_hba.conf,我将所有METHODs 更改为md5。
  • 我给了postgres帐户一个密码
  • 我用密码添加了一个名为webuser的新帐户(请注意,我对该帐户没有做任何其他事情,因此我不能确切地说我知道它拥有什么权限以及所有权限)。

phpPgAdmin config.inc.php

  • 将行更改$conf['servers'][0]['host'] = '';$conf['servers'][0]['host'] = '127.0.0.1';(我也尝试使用localhost作为那里的值)。
  • 设置$conf['extra_login_security']false

每当我尝试登录phpPgAdmin时,即使使用成功的凭据(可使用的凭据),也会出现“登录失败”的提示psql。我试图通过FAQ中问题3中提到的一些步骤进行操作,但到目前为止,效果并不理想。这可能是没有帮助的,因为这是我使用PostgreSQL的第一天。我对MySQL非常熟悉,但是我必须对正在使用的项目使用PostgreSQL。

谁能为在CentOS 6.2上设置phpPgAdmin提供一些帮助吗?如果到目前为止,我在配置中所做的事情都非常错误,那么吹牛什么/什么都没什么大不了的,因为这还不像我在其中存储任何数据一样!

感谢您提供的任何见解!

Answers:


7

好吧,我知道了-这是对PostgreSQL缺乏经验和phpPgAdmin的非描述性错误的结合。

原来我没有启用TCP / IP访问,这意味着没有PHP应用程序可以访问数据库。要解决此问题,我必须进行两项更改:

  • 它似乎更好地工作,如果我设置listen_addresses'*'postgresql.conf。我不确定这是否完全必要,但是在像这样的防火墙设备上,这应该不是问题。
  • 我必须setsebool -P httpd_can_network_connect_db 1从终端窗口运行命令,以使Apache实际与程序连接并进行连接。我不记得在此步骤之后是否必须重新启动PostgreSQL,但这可能不会受到伤害。

最后一点:我看到了几件事情提示修改一行tcpip_socket=truepostgresql.conf。这显然在PostgreSQL 9.1中不起作用。实际上,在我添加之后,它拒绝启动。所以不要这样做。

无论如何,希望这可以帮助遇到我同样问题的人!


在具有Security Enhanced Linux(SELinux)的系统上,必须使用httpd_can_network_connect_db标志设置setsebool
2013年

需要说明的是,如果您位于同一服务器上,则不一定需要启用TCP / IP访问才能使phpPgAdmin(或其他PHP脚本)连接到Postgres,也可以通过本地unix套接字进行连接。但是,您仍然可能会遇到与SELinux相关的问题。
xzilla

0

在看到您的解决方案之前,我无法设置phpPgAdmin。要完成您的解决方案:

  • 它是不是有用到组listen_address'*'如果你的phpPgAdmin的服务器是在同一台电脑比你的PostgreSQL服务器(9.2给我),你可以将其设置为localhost
  • 唯一有用的是设置SELinux布尔值。

0

我尝试了上述解决方案,但仍然收到“登录失败”消息。要解决,我必须确保passwordpg_hba.conf文件中还将IPv6设置为。这样做:vi /var/lib/pgsql/9.4/data/pg_hba.conf并进行相应的编辑。然后重新启动httpd和postgresql(无论使用什么版本)


0

好吧,默认用户是postgres,没有新安装的密码。因此,在用户框中输入此内容并清除密码框。单击。完成。

如果您使用pgAdmin4并在首次登录时输入了密码,该密码就是您用于用户postgres的密码。现在在phppgadmin中,输入postgres作为用户名,然后在密码框中输入该密码。单击。做完了 谢谢


0

在具有GitLab-CE的服务器上运行,我在日志文件上收到的消息是:

tail -f -n 8 /var/log/postgresql/postgresql-*-main.log
......
2019-07-24 16:33:15.073 EDT [9640] postgres@template1 LOG:  provided user name (postgres) and authenticated user name (gitlab-www) do not match
2019-07-24 16:33:15.073 EDT [9640] postgres@template1 FATAL:  Peer authentication failed for user "postgres"
2019-07-24 16:33:15.073 EDT [9640] postgres@template1 DETAIL:  Connection matched pg_hba.conf line 85: "local   all             postgres                                peer"

因此,我psql通过cli 连接并创建了丢失的角色/用户(以我为例gitlab-www):

# sudo -u postgres psql
CREATE USER "gitlab-www" WITH PASSWORD 'YouKnow..' CREATEDB CREATEROLE SUPERUSER LOGIN;

然后,登录过程打开了大门。


通常,对等身份验证将给定用户限制为只能通过命令行访问Postgres(例如psql),并且通常不适用于phpPgAdmin。创建一个新用户是一个很好的解决方案,但是您也可以在pg_hba.conf中更改身份验证方法。
xzilla
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.