tutorial postgres php7 pgsql instalar habilitar datos configurar conectar como php postgresql

php7 - ¿Cómo me conecto a PostgreSQL sin especificar un nombre de base de datos?



php7-pgsql (3)

Necesito conectarme a algún servidor PostgreSQL que proporcione algunas credenciales e imprimir una lista de las bases de datos disponibles en ese host para un usuario determinado.

Estoy intentando:

<?php $connection = pg_connect("host=localhost user=testuser password=123 connect_timeout=5"); ?>

Y me sale:

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

Pensé que esto debía ser posible porque phpPgAdmin lo hace, pero miré las fuentes de phpPpAdmin y encontré que se conectan a una base de datos llamada template1 .

De http://www.postgresql.org/docs/8.1/interactive/manage-ag-templatedbs.html :

CREAR BASE DE DATOS realmente funciona copiando una base de datos existente. De forma predeterminada, copia la base de datos del sistema estándar llamada template1. Por lo tanto, esa base de datos es la "plantilla" a partir de la cual se crean las nuevas bases de datos. Si agrega objetos a la plantilla1, estos objetos se copiarán en las bases de datos de usuario creadas posteriormente. Este comportamiento permite modificaciones locales del sitio al conjunto estándar de objetos en las bases de datos. Por ejemplo, si instala el lenguaje de procedimiento PL / pgSQL en template1, estará automáticamente disponible en las bases de datos de usuarios sin que se realice ninguna acción adicional cuando se realicen esas bases de datos.

¿Hay alguna forma de conectarse sin especificar ninguna base de datos?


¿Por qué no te conectas a tu base de datos de mantenimiento (generalmente postgres ?). No sé si eso funcionará. Pero creo que tendrá que consultar esta base de datos de todos modos para recuperar las bases de datos disponibles para un usuario determinado.


Como el manual de pg_connect dice que el parámetro dbname en la cadena de conexión por defecto es el valor del parámetro de usuario. Es por eso que utiliza ''testuser''. Si desea que dbname esté vacío, intente "... dbname='''' ..." .


Tienes que conectarte a una base de datos. La base de datos que puede usar para una "base de datos de mantenimiento" depende de la instalación y la administración posterior. Después de una instalación predeterminada, hay 2 bases de datos que se podrían usar para la conexión inicial: "template1" y "postgres". Es aconsejable crear un nuevo usuario y una base de datos con el mismo nombre y usarlos.