【问题标题】:Problem with user authentication via psql通过 psql 进行用户身份验证的问题
【发布时间】:2026-01-31 16:10:01
【问题描述】:

我对 postgre 中的数据库管理相对较新,我正在浪费大量时间试图找出我在这里做错了什么。我的目标是创建一个用户、一个数据库,并从该用户下连接到该数据库。

我正在做的事情如下:

sudo -u postgres psql
postgres=# create database mydb;
postgres=# create user anna with encrypted password 'anna';
postgres=# grant all privileges on database mydb to anna;

一切顺利。 然后我尝试以这种方式连接到 db:

sudo -u anna psql mydb

我最终遇到了一个奇怪的错误:

sudo:未知用户:安娜

sudo:无法初始化策略插件

【问题讨论】:

    标签: psql


    【解决方案1】:

    sudo-u 选项指定操作系统用户,而不是数据库用户。

    改为使用psql-U 选项:

    sudo -u postgres psql -U anna -d mydb
    

    如果 pg_hba.conf 配置为在本地连接上进行 peer 身份验证,这将不起作用,除非您指定额外的名称映射。

    【讨论】:

    • 你能告诉我为什么psql -h 127.0.0.1 -p 5433 -U anna 不起作用吗?它说:psql: error: FATAL: database "anna" does not exist
    • 因为您没有使用-d mydb 指定数据库。数据库默认为与数据库用户名相同的值。