让 PHP 与 PostgreSQL 通信

让 PHP 与 PostgreSQL 通信

我尝试在 Firefox 中使用的 PHP 代码

<?php
 // Connecting, selecting database
 $dbconn = pg_connect("host=localhost dbname=masi user=postgres password=abc")
     or die('Could not connect');
 ?>

我明白了

Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: FATAL: password authentication failed for user "postgres" in /var/www/ex1.php on line 3

问题似乎出在我/etc/postgresql/8.3/main/pg_hba.conf似乎我需要在文件中添加一些 IP 地址

我的 pg_dba.conf 中的代码

# Database administrative login by UNIX sockets
 local   all         postgres                          ident sameuser
 
 # TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
 
 # "local" is for Unix domain socket connections only
 local   all         all                               ident sameuser
 # IPv4 local connections:
 host    all         all         127.0.0.1/32          md5
 # IPv6 local connections:
 host    all         all         ::1/128               md5

由于 PHP 和 Apache2 都可以运行,因此该错误似乎出在 PostgresSQL 中。我可以通过 访问 Psql sudo -u postgres psql,因为我没有设法更改默认设置。这可能是问题的原因。但是,我的 PHP 代码使用默认设置,因此这应该不是问题。

我改变了我的/etc/apache2/环境变量不成功:

export APACHE_RUN_USER=postgres     // I changed this line from masi to postgres
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2.pid

我收到了同样的错误信息。

如何在 Ubuntu 中通过 pg_hba.conf 使 PHP 与 PostgreSQL 协同工作?

答案1

第一个问题

通过以下方式登录用户 Postgres

sudo su postgres

创建新用户,例如,PostgreSQL 的 Masi

 CREATE USER masi with SUPERUSER

然后,重新以默认用户身份登录。

#2 问题

Pg 中的默认用户没有密码。这导致了 PHP 中的问题。

我将其更改dbconn为以下内容

 // independent variables
 $dbHost = "localhost";
 $dbPort = 5432;
 $dbName = "masi";
 $dbUser = "masi";
 $dbPassword = "your-password";

 $conn = "host=$dbHost port=$dbPort dbname=$dbName user=$dbUser password=$dbPassword";

问题在于我不知道默认 Postgres 帐户的密码。这迫使我创建一个带有密码的新帐户。

如果没有密码,我无法让 pgAdmin 3 在数据库中工作。

答案2

尝试

host    all         all         127.0.0.1/32          trust

或者

local   all         all                               trust

链接文本

答案3

我通过添加以下行解决了该问题pg_dba.conf

# host    all         all         127.0.0.1/32          trust #

相关内容