一. 數據庫服務未啟動
?報錯信息:
[postgres@k8s-node2 ~]$ psql
psql: could not connect to server: No such file or directoryIs the server running locally and acceptingconnections 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 refusedIs the server running on host "192.168.66.101" and acceptingTCP/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 hostIs the server running on host "192.168.66.101" and acceptingTCP/IP connections on port 5432?
此時檢查數據庫服務器上的防火墻,可以看到防火墻是開啟的,檢查放開的端口為空,此時外部無法訪問該服務器的5432端口,進而無法訪問數據庫
[root@k8s-node2 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: active (running) since Wed 2025-03-19 22:57:44 PDT; 26s agoDocs: man:firewalld(1)Main PID: 111666 (firewalld)Tasks: 2Memory: 32.9MCGroup: /system.slice/firewalld.service└─111666 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopidMar 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
success2)關閉并禁用防火墻
[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做了限制用戶連接
.....................................................如有其他問題可在評論留言