Postgres:创建后无法连接到数据库?

Postgres: cannot connect to database after creating it?

我正在尝试在 Debian 7 上创建一个新的 Postgres 数据库和超级用户。

但是,我似乎无法在创建新数据库后连接到它。

这是我所做的:

$ sudo su - postgres
postgres@:~$ createdb prescribing
postgres@$ psql
postgres=# create user prescribing with password 'mypassword';
CREATE ROLE
postgres=#  GRANT ALL PRIVILEGES ON DATABASE prescribing to prescribing;
GRANT
postgres=# exit\q
could not save history to file "/var/lib/postgresql/.psql_history": No such file or directory
postgres@:~$ psql -d prescribing -U prescribing
psql: FATAL:  Peer authentication failed for user "prescribing"

我做错了什么?

我不确定错误是否与缺少历史文件有关,或者是否是我不完全理解的 Unix 用户和数据库用户之间的某种交互。

我也试过 psql -U prescribing -d prescribing -W,看看我是否可以让它向我询问密码,但没有帮助。

更新:这是pg_hba.conf的内容:

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

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

使用'peer' 身份验证,unix 用户必须与数据库用户相匹配。您正在尝试以 'prescribing' 用户身份连接,但以 linux 'postgres' 用户身份登录。由于这种不匹配,它不起作用。

选择 'peer' 身份验证是因为您在本地连接(通过 unix 套接字),并且您的 pg_hba.conf 指定为此使用 'peer'。如果您将 'local' 条目更改为 md5,那么您将能够使用密码验证。或者,您可以通过 TCP/IP 地址 127.0.0.1 连接,例如:

psql -h 127.0.0.1 -U prescribing -d prescribing