默认情况下,postgresql本机的连接是信任连接,只要有用户名就可以连接,不用密码。即postgresql默认情况下除本机外的机器是不能连接的。所以当客户端远程访问数据库时,不更改默认设置则会访问失败。例如:no pg_hba.conf entry for "xxx.xxx.xx.x", user "xx", database "postgres", SSL off.
要改变这种默认设置需要更改postgresql安装目录下的两个配置文件:pg_hba.conf与postgresql.conf。
pg_hba.conf
pg_hba.conf每条记录声明一种联接类型,一个客户端 IP 地址范围(如果和联接类型相关的话),一个数据库名,一个用户名字,以及对匹配这些参数的联接使用的认证方法。
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5
host all postgres 0.0.0.0/0 password
# IPv6 local connections:
host all all ::1/128 md5
使用的认证方法:
trust
无条件地允许联接。这个方法允许任何可以与PostgreSQL数据库服务器联接的用户以他们期望的任意PostgreSQL 数据库用户身份进行联接,而不需要口令。
md5
要求客户端提供一个 MD5 加密的口令进行认证。
postgresql.conf
要把postgresql.conf里的监听地址设置为:listen_addresses = '*'(默认的是localhost)。
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
port = 5432 # (change requires restart)
max_connections = 100 # (change requires restart)