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


当前回答

这个命令将提供postgres端口号

 \conninfo

如果Postgres运行在Linux服务器上,也可以使用下面的命令

sudo netstat -plunt |grep postgres

或者(如果是邮政局长送来的)

sudo netstat -plunt |grep postmaster

你会看到类似的东西

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      140/postgres
tcp6       0      0 ::1:5432                :::*                    LISTEN      140/postgres

在本例中,端口号为5432,也是默认端口号

信贷:链接

其他回答

到“终端机”输入

service postgres status

在结果中,您可以获得端口的详细信息

在我的例子中,它运行在端口“5432”(默认)上。我用的是CentOS 7。希望这能有所帮助。

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

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

里面有一行字:

port = 5432

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

选择inet_server_port ();提供服务器的端口。

因为你说你(你自己)已经运行postgresql,我假设:

你在Linux上, 至少有一个帐户具有超级用户权限和/或可以访问postgres角色,以及 (只是为了好玩)您需要在数据库本身的单个事务中访问这两个值

/* SQL代码*/

CREATE TEMP TABLE tmp ( hostname text, port bigint ) ON COMMIT DROP;

COPY tmp FROM PROGRAM $pgm$ printf "$HOSTNAME\t$(i=1 && until [[ "$(psql -U postgres -p $i -qt -c "SELECT 'true'" 2>/dev/null | sed -e '$d' | xargs | tr -d "\n")" == "true" ]]; do i=$(($i+1)) && if [ $i == "65535" ]; then break ; fi ; done && echo $i)"$pgm$ ( format 'text', delimiter '\t' );

SELECT host, port FROM tmp;

将为您提供两者,将$pgm$分隔的代码作为shell脚本执行,并将值返回到服务器端COPY API的stdin。不幸的是,此方法需要一个表目标来调用服务器端shell。

如果您需要能够在没有临时表的情况下调用,即作为函数调用,请尝试在plsh语言中实现上述shell。

SELECT *
FROM pg_settings
WHERE name = 'port';