我有PSQL运行,并试图得到一个perl应用程序连接到数据库。是否有命令来查找数据库正在运行的当前端口和主机?
当前回答
postgresql端口在postgresql.conf文件中定义。
对我来说,Ubuntu 14.04的目录是:/etc/postgresql/9.3/main/postgresql.conf
里面有一行字:
port = 5432
修改该数字需要重新启动postgresql才能生效。
其他回答
因为你说你(你自己)已经运行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。
从终端你可以简单地做一个“postgres列表集群”:
pg_lsclusters
它将返回Postgres版本号、集群名称、端口、状态、所有者以及数据目录和日志文件的位置。
PostgreSQL默认端口号为5432。运行数据库的主机应该是由您的主机提供商提供的;如果没有指定,我猜它应该是与web服务器相同的主机。通常这将被配置为localhost,假设您的web服务器和数据库服务器在同一主机上。
可以使用psql \conninfo中的命令 在主机“host_name”上,以用户“user_name”在端口“port_number”连接到数据库“your_database”。
选择inet_server_port ();提供服务器的端口。
推荐文章
- PostgreSQL错误:由于与恢复冲突而取消语句
- 按IN值列表排序
- 如何在Postgres 9.4中对JSONB类型的列执行更新操作
- PostgreSQL列名区分大小写吗?
- postgresql COUNT(DISTINCT…)非常慢
- Postgres:检查数组字段是否包含值?
- 如何在postgresql中创建数据库用户?
- 使用PSQL命令查找主机名和端口
- Postgresql列表和排序表的大小
- 选择其他表中没有的行
- 在PostgreSQL中使用UTC当前时间作为默认值
- 优化PostgreSQL进行快速测试
- django test app error -在创建测试数据库时出现错误:创建数据库的权限被拒绝
- Postgres唯一约束与索引
- 使用电子邮件地址为主键?