我有PSQL运行,并试图得到一个perl应用程序连接到数据库。是否有命令来查找数据库正在运行的当前端口和主机?


当前回答

SELECT CURRENT_USER usr, :'HOST' host, inet_server_port() port;

这里使用了psql内置的HOST变量

和postgres系统信息函数,文档在这里

其他回答

我认为PostgreSQL没有提供一个内置的函数来获取服务器的主机名,所以我们可能需要写一个扩展来从服务器获取信息。

我发现有一个PostgreSQL扩展pg-hostname,可以从服务器获取主机名。

当我们安装了扩展,我们可以启用,并通过inet_server_port和主机名函数查询信息。

CREATE EXTENSION hostname;

SELECT hostname(),inet_server_port();

@ a_horis_with_no_name答案的补充。 获取主机名:

SELECT boot_val,reset_val FROM pg_settings WHERE name='listen_addresses';;

要找到端口号,可以运行这个命令(假设您在localhost上)

select setting from pg_settings where name='port';

postgresql端口在postgresql.conf文件中定义。

对我来说,Ubuntu 14.04的目录是:/etc/postgresql/9.3/main/postgresql.conf

里面有一行字:

port = 5432

修改该数字需要重新启动postgresql才能生效。

PostgreSQL默认端口号为5432。运行数据库的主机应该是由您的主机提供商提供的;如果没有指定,我猜它应该是与web服务器相同的主机。通常这将被配置为localhost,假设您的web服务器和数据库服务器在同一主机上。