PostgreSQL:为什么我可以使用设置的密码连接到用户而无需提供密码?

KRT*_*Tac 2 sql database passwords postgresql

创建新用户john后:

CREATE USER john PASSWORD 'test';
CREATE DATABASE johndb OWNER john;
我可以通过以下方式连接到PostgreSQL服务器:
psql -U john johndb
问题是psql从不要求我输入密码.由于显而易见的原因,我真的需要知道什么是错的.

Gre*_*ill 6

您的pg_hba.conf文件可能将本地连接设置为"trust".默认包含这样的部分:

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

这意味着对于来自本地计算机的所有连接,请信任客户端所说的内容.如果客户端说"我是用户john",那么服务器将允许这样做.

PostgreSQL文档有关于该pg_hba.conf文件的整个部分.