【问题标题】:Find the host name and port using PSQL commands使用 PSQL 命令查找主机名和端口
【发布时间】:2011-08-01 16:40:45
【问题描述】:

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

【问题讨论】:

    标签: postgresql psql


    【解决方案1】:
    SELECT *
    FROM pg_settings
    WHERE name = 'port';
    

    【讨论】:

    • 如果您在同一个集群中有多个服务器,这将不起作用,不幸的是......
    • 这实际上给了你端口号而不是服务器主机。
    • @hd1:然后呢?问题是(也)如何获取端口号。这就是查询返回的内容。
    • 是的,但是如果无法连接到数据库,则无法执行:P
    【解决方案2】:

    这个命令会给你 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,这也是默认端口号

    学分link

    【讨论】:

    • 它将成为 5432 的邮政主管。
    • 这是正确的答案。选择的答案是正确的,但与问题无关。
    【解决方案3】:

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

    【讨论】:

    • 我也遇到了这个问题,尝试了5433端口,这样就可以了
    • 这实际上并不能回答问题。
    • @s.k 阅读上下文。 OP 不知道他们的 postgres 数据库的主机和端口。他们可以使用基本的psql 命令连接,这意味着localhost:5432。除非有人对 env vars/aliases/etc 很聪明。十年后我不喜欢我的答案,但 solving the x 而不是 y 非常好,在这种情况下已经帮助了数百人。
    • 我同意@sk 我在托管数据库的远程服务器上,因此当然可以通过 localhost 在本地连接,但我希望不同服务器上的外部应用程序可以访问数据库当然,数据库在本地不存在,因此知道原始问题的答案对我很有用
    【解决方案4】:

    select inet_server_addr(); 为您提供服务器的 IP 地址。

    【讨论】:

    • 很遗憾,如果您通过 ssh 代理连接,这不会给出“实时”主机名 - 我不断收到“127.0.0.1”
    • 我什么也没得到:$postgres=# select inet_server_addr(); inet_server_addr ------------------ (1 row)
    • 没有给出主机名
    【解决方案5】:

    这是非sql方法。图像本身给出了说明。选择您要查找有关信息的服务器,然后按照步骤操作。

    【讨论】:

      【解决方案6】:
      select inet_server_addr( ), inet_server_port( );
      

      【讨论】:

      • 这与 Kaarel Kitsemets 的 answer 和 Andromida 的 answer 有何不同?
      • 它回答了作为单一复制和粘贴解决方案提出的问题。
      【解决方案7】:

      select inet_server_port(); 为您提供服务器的端口。

      【讨论】:

      • 在 bluehost 上,此查询返回一个空白字段,而实际上端口为 5432。此查询并不总是返回端口号。
      【解决方案8】:

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

      在 Ubuntu 14.04 中对我来说是:/etc/postgresql/9.3/main/postgresql.conf

      里面有一行:

      port = 5432
      

      更改那里的数字需要重新启动postgresql才能生效。

      【讨论】:

        【解决方案9】:

        你可以从终端做:

        \conninfo

        我建议阅读有关其所有命令的详尽列表的文档:

        \?

        【讨论】:

          【解决方案10】:

          可以在psql中使用命令\conninfo 你会得到You are connected to database "your_database" as user "user_name" on host "host_name" at port "port_number".

          【讨论】:

            【解决方案11】:

            从终端你可以简单地做一个“postgres list clusters”:

            pg_lsclusters
            

            它将返回 Postgres 版本号、集群名称、端口、状态、所有者以及数据目录和日志文件的位置。

            【讨论】:

              【解决方案12】:
              SELECT CURRENT_USER usr, :'HOST' host, inet_server_port() port;
              

              这使用 psql 的内置 HOST 变量,记录在 here

              和 postgres 系统信息功能,记录在 here

              【讨论】:

              • 如果您在本地连接,HOST 将是您的 UNIX 域套接字所在的目录,例如 /tmp
              【解决方案13】:

              要查找端口号,您可以运行此命令(假设您在本地主机上)

              select setting from pg_settings where name='port';
              

              【讨论】:

                【解决方案14】:

                转到“终端”,然后输入

                service postgres status
                

                在结果中你可以得到port details

                在我的情况下,它在端口“5432”(默认)上运行。
                我使用的是 CentOS 7。希望这会有所帮助。

                【讨论】:

                  【解决方案15】:
                  service postgresql status
                  

                  返回: 10/main(端口 5432):在线

                  我正在运行 Ubuntu 18.04

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2023-03-14
                    • 2017-06-15
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-02-17
                    相关资源
                    最近更新 更多