当前位置: 首页 > news >正文

Postgresql无法连接问题汇总

一. 数据库服务未启动

报错信息:

[postgres@k8s-node2 ~]$ psql 
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.5432"?

✅ 解决方案

1)用服务启动postgresql数据库:

[postgres@k8s-node2 ~]$ systemctl start postgresql

2)用命令启动postgresql数据库(需配置环境变量)

[postgres@k8s-node2 ~]$ pg_ctl start -D /var/lib/pgsql/data

二. pg_hba.conf 认证问题

报错信息:

[postgres@k8s-node2 data]$ psql -U test_user -d postgres
psql: FATAL:  Peer authentication failed for user "test_user"

或者:
[postgres@k8s-node2 data]$ psql -U test_user -d test_db
psql: FATAL:  no pg_hba.conf entry for host "192.168.66.11", user "test_user", database "test_db"

解决方案:

编辑data目录下的pg_hba.conf文件,IPv4 local connections: 下增加如下一行
host    all             all             0.0.0.0/0               md5

[postgres@k8s-node2 data]$ vim /var/lib/pgsql/data/pg_hba.conf

翻到文件最下方:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             0.0.0.0/0               md5
host    all             all             127.0.0.1/32            md5

修改完需要重启数据库使修改参数生效,重启完再次连接提示需要密码,此时可正常连接。

[postgres@k8s-node2 data]$ pg_ctl restart

[postgres@k8s-node2 data]$ psql -U test_user -d test_db
Password for user test_user:

三. listen_addresses 配置问题

报错信息:

[postgres@k8s-node2 data]$ psql -U test_user -h 192.168.66.101
psql: could not connect to server: Connection refused
	Is the server running on host "192.168.66.101" and accepting
	TCP/IP connections on port 5432?

 ✅ 解决方案:

登录查看当前listen_addresses为默认的localhost(只允许127.0.0.1,本机局域网不可以)

postgres=# show listen_addresses ;
 listen_addresses 
------------------
 localhost
(1 row)

修改listen_addresses为'0.0.0.0';

postgres=# alter system set listen_addresses ='0.0.0.0';
ALTER SYSTEM

该参数重启数据库生效,重启完后,可正常登录,

[postgres@k8s-node2 data]$ pg_ctl restart 
waiting for server to shut down.... done
server stopped
waiting for server to start....2025-03-19 22:49:45.779 PDT [104870] LOG:  redirecting log output to logging collector process
2025-03-19 22:49:45.779 PDT [104870] HINT:  Future log output will appear in directory "../pg_log".
 done
server started


[postgres@k8s-node2 data]$ psql -U test_user -h 192.168.66.101
Password for user test_user: 

四. 防火墙已开启但未放开数据库的端口 (以centos7防火墙为例)

报错信息:

此类报错常见于用另一台服务器访问在数据库服务器的数据库,192.168.66.101上有安装数据库连接时报错:

[root@master etc]# psql -U test_user -p 5432 -h 192.168.66.101
psql: error: could not connect to server: No route to host
	Is the server running on host "192.168.66.101" and accepting
	TCP/IP connections on port 5432?

此时检查数据库服务器上的防火墙,可以看到防火墙是开启的,检查放开的端口为空,此时外部无法访问该服务器的5432端口,进而无法访问数据库

[root@k8s-node2 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2025-03-19 22:57:44 PDT; 26s ago
     Docs: man:firewalld(1)
 Main PID: 111666 (firewalld)
    Tasks: 2
   Memory: 32.9M
   CGroup: /system.slice/firewalld.service
           └─111666 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

Mar 19 22:57:44 k8s-node2 systemd[1]: Starting firewalld - dynamic firewall daemon...
Mar 19 22:57:44 k8s-node2 systemd[1]: Started firewalld - dynamic firewall daemon.
Mar 19 22:57:44 k8s-node2 firewalld[111666]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure confi...t now.
Hint: Some lines were ellipsized, use -l to show in full.
[root@k8s-node2 ~]# firewall-cmd --list-ports

[root@k8s-node2 ~]#

 ✅ 解决方案:

1)开启5432端口
[root@k8s-node2 ~]# firewall-cmd --permanent --add-port=5432/tcp
success
[root@k8s-node2 ~]# firewall-cmd --add-port=5432/tcp
success

2)关闭并禁用防火墙
[root@k8s-node2 ~]# systemctl stop firewalld
[root@k8s-node2 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

五、其他问题

1)端口被占用

2)用户权限不足

3)pg_hba.conf做了限制用户连接

.....................................................如有其他问题可在评论留言

相关文章:

  • Python直方图:从核密度估计到高维空间解析
  • 解决项目使用eslint+prettier,启动报错: error Delete `␍` prettier/prettier
  • Vulnhub-wordpress通关攻略
  • CentOS系类普通挂载磁盘挂载命令
  • 云上 Redis 迁移至本地机房
  • Kafka consumer_offsets 主题深度剖析
  • LabVIEW运动控制(二):EtherCAT运动控制器的多轴示教加工应用(下)
  • npm 命令使用文档
  • 如何在PDF中嵌入数据
  • Excel处理控件Spire.XLS系列教程:C# 在 Excel 中添加或删除单元格边框
  • 【RabbitMQ】RabbitMQ如何保证消息不丢失?
  • sqlite3
  • Linux 音频驱动 WM8960 音频 DAC IC 音乐播放与录音
  • 第四周日志-用网络请求理解bp(2)
  • 华为OD机试-会议室占用时间段(Java 2024 C卷 100分)
  • Rust语言学习
  • 体育直播视频源格式解析:M3U8 vs FLV
  • mysql中find_in_set()函数用法详解及增强函数
  • mysql-DELETE、DROP 和 TRUNCATE区别
  • deepSpeed多机多卡训练服务器之间,和服务器内两个GPU是怎么通信
  • 4月证券私募产品备案量创23个月新高,股票策略占比超六成
  • 中非民间对话在赞比亚举行
  • 上海市委常委会会议暨市生态文明建设领导小组会议研究基层减负、生态环保等事项
  • 欧盟委员会计划对950亿欧元美国进口产品采取反制措施
  • 教育部、国家发改委联合启动实施教师教育能力提升工程
  • 国防部:正告菲方停止以任何方式冲撞中方核心利益