最近准备上线新网站,决定使用PostgreSQL数据库,刚好PostgreSQL发布了PostgreSQL15正式版,对于软件我一直喜欢新版本,自然选择最新版,安装过程很顺利,部署网站代码时却连接不了PostgreSQL。
首先想到的是PostgreSQL有没有在运行,执行命令:
ps -ef | grep postgres
Image
可以看到系统中PostgreSQL的进程在运行。
然后考虑到是不是PostgreSQL默认的5432端口号被占用,接着执行命令:
netstat -lanp|grep 5432
Image
端口号正在被PostgreSQL使用,没有问题。
最后发现是因为IPv6导致locahost连接问题,解决方法很简单,PostgreSQL在安装过程自动生成了一个用于客户端认证的配置文件pg_hba.conf,只需要找到这个文件,去掉 host all all ::1/128 trust 前面的注释符号#。
Image
如果你的文件没有这行配置,复制下面的添加到pg_hba.conf 然后重启PostgreSQL即可解决。
host all all ::1/128 trust
2024年8月14日更新
更安全的做法是改成:
host all all ::1/128 md5