Назад | Перейти на главную страницу

Чтобы заставить PHP общаться с PostgreSQL

Мой код PHP, который я пытаюсь использовать в Firefox

<?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

Похоже, ошибка в PostgresSQL, поскольку PHP и Apache2 работают. Я могу получить доступ к Psql с помощью sudo -u postgres psql, так как мне не удалось изменить настройки по умолчанию. Вероятно, это причина проблемы. Однако мой PHP-код использует настройки по умолчанию, так что это не должно быть проблемой.

Я изменил строчку в своем / и т.д. / apache2 / envvars неудачно:

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

Я получаю те же сообщения об ошибках.

Как заставить PHP работать с PostgreSQL с помощью pg_hba.conf в Ubuntu?

Проблема №1

Авторизуйтесь под пользователем Postgres через

sudo su postgres

Создайте нового пользователя, например, Masi для PostgreSQL,

 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 работать без пароля в базе данных.

попробуйте с

host    all         all         127.0.0.1/32          trust

или

local   all         all                               trust

текст ссылки

Я решил проблему, добавив следующую строку в pg_dba.conf.

# host    all         all         127.0.0.1/32          trust #