Мне нужно подключиться к некоторому серверу PostgreSQL, предоставляя некоторые учетные данные, и распечатать список доступных баз данных на этом хосте для данного пользователя.
Я пытаюсь:
<?php
$connection = pg_connect("host=localhost user=testuser password=123 connect_timeout=5");
?>
И я получаю:
Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: FATAL: database "testuser" does not exist in /var/www/test.php on line 56
Я думал, что это должно быть возможно, потому что phpPgAdmin делает это, но я смотрел источники phpPpAdmin и обнаружил, что они подключаются к базе данных с именем template1
.
Из http://www.postgresql.org/docs/8.1/interactive/manage-ag-templatedbs.html:
CREATE DATABASE фактически работает, копируя существующую базу данных. От default, он копирует стандартную системную базу данных с именем template1. таким образом эта база данных является "шаблоном", из которого создаются новые базы данных. Если вы добавляете объекты в шаблон1, эти объекты будут скопированы в впоследствии созданных пользовательских баз данных. Такое поведение позволяет локально модификации стандартного набора объектов в базах данных. Для Например, если вы устанавливаете процедурный язык PL/pgSQL в template1, он будет автоматически доступен в пользовательских базах данных без каких-либо дополнительных действия, предпринимаемые при создании этих баз данных.
Есть ли способ подключения без указания какой-либо базы данных?