描述

通过宿主机psql -p 15432命令连接Docker部署的PostgreSQL报错,数据库容器映射端口15432。由于没有通过-h指定数据库主机地址,默认走本地socket套接字连接,本地不存在,导致报错。

问题

15432 是docker部署的postgres数据库端口

通过psql -p 15432 连接PostgreSQL数据库报错

user@xxxxxx:~$ psql -p 15432
psql: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.15432"?

原因

-h 不指定,默认走本地套接字连接

1.如果是容器起的PostgreSQL,容器内是5432,映射端口为15432,在宿主机通过15432端口访问,psql -p 15432就会报这个错,因为宿主机没有这个文件/var/run/postgresql/.s.PGSQL.15432

psql: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.15432"?

2.如果宿主机直接配置的postgresql启动端口是15432psql -p 15432不会报错,因为有相关本地套接字(/run/postgresql/.s.PGSQL.15432

postgres@XXXXXX:~$ ls /run/postgresql/.s.PGSQL.*
/run/postgresql/.s.PGSQL.15432  /run/postgresql/.s.PGSQL.15432.lock  /run/postgresql/.s.PGSQL.5432.lock

# 连接正常
postgres@XXXXXX:~$ psql -p 15432
psql (11.5 (Debian 11.5-3.pgdg90+1))
Type "help" for help.

postgres=# \q

解决方法

使用 -h 指定数据库IP,即可

psql -p 15432 -h 0.0.0.0

标签: 问题记录, PostgreSQL

添加新评论