如何在不指定数据库名称的情况下连接到PostgreSQL?
2022-08-30 09:01:36
我需要连接到一些提供一些凭据的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实际上通过复制现有数据库来工作。默认情况下,它复制名为 template1 的标准系统数据库。因此,该数据库是创建新数据库的“模板”。如果将对象添加到 template1,这些对象将被复制到随后创建的用户数据库中。此行为允许对数据库中的标准对象集进行站点本地修改。例如,如果在 template1 中安装过程语言 PL/pgSQL,它将在用户数据库中自动可用,而无需在创建这些数据库时执行任何额外操作。
有没有办法在不指定任何数据库的情况下进行连接?