I need to connect to some PostgreSQL server providing some credentials, and print a list of available databases on that host for a given user.
I am trying:
<?php
$connection = pg_connect("host=localhost user=testuser password=123 connect_timeout=5");
?>
And I get:
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
I thought this must be possible because phpPgAdmin does it, but I looked at phpPpAdmin sources and found that they connect to a database named template1
.
From http://www.postgresql.org/docs/8.1/interactive/manage-ag-templatedbs.html:
CREATE DATABASE actually works by copying an existing database. By
default, it copies the standard system database named template1. Thus
that database is the "template" from which new databases are made. If
you add objects to template1, these objects will be copied into
subsequently created user databases. This behavior allows site-local
modifications to the standard set of objects in databases. For
example, if you install the procedural language PL/pgSQL in template1,
it will automatically be available in user databases without any extra
action being taken when those databases are made.
Is there a way to connect without specifying any database?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…