postgresql的远程链接出错原因分析

在写一个在线编译系统时打算用远程的数据库进行测试,但是链接出现了问题.
这里先说一下远程连接时需要修改的配置吧(只是针对Linux用户).

远程链接配置

需要修改pg_hba.conf和postgresql.conf这两个文件.
PS:如果你在安装数据库时,在进行数据库初始化操作(以centos6.X版本为例),如下:

sudo service postgresql-9.5 initdb

在初始化数据库时可以指定参数 –PGDATA=“/data”,该参数是用于指明数据库的数据文件的存放路径,默认是在/var/lib/pgsql/9.5/data路径下。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     ident
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            ident
#host    replication     postgres        ::1/128                 ident

刚刚安装完成的postgresql是这样的.
只是针对自己本机登录识别.

需要修改如下:

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/24              trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

另一个要改的就是postgresql.conf文件.
将listen_address =”localhost” 引号里面改为*,即对所有地址监听.

原因

在ipv4下面添加的0.0.0.0/24这个是对全网段的许可,24表示的是子网掩码.
这里很多人都将后面的ident改为MD5的认证方式,导致FATAL: password authentication failed for user “postgres”错误的出现.
其实这个错误的根本原因就是:用户密码认证错误引起的,因为postgresql安装完成之后,默认的就是md5的认证方式,正确的方式就是直接时候trust就ok了.

希望以上对你有帮助.

标签:PostgreSQL 发布于:2019-11-10 23:26:17