Мой код 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?
Авторизуйтесь под пользователем Postgres через
sudo su postgres
Создайте нового пользователя, например, Masi для PostgreSQL,
CREATE USER masi with SUPERUSER
Затем войдите в систему как пользователь по умолчанию.
У пользователя по умолчанию на 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 работать без пароля в базе данных.
Я решил проблему, добавив следующую строку в pg_dba.conf
.
# host all all 127.0.0.1/32 trust #