无法在 postgresql 中创建用户

Posted

技术标签:

【中文标题】无法在 postgresql 中创建用户【英文标题】:Can not CREATE USER in postgresql 【发布时间】:2021-01-22 19:59:49 【问题描述】:

我在 Windows 的 powershell、命令提示符和 ubuntu 上进行了尝试:

postgres=# CREATE USER sally WITH PASSWORD 'secret';
CREATE ROLE
postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | 
 sally     |                                                            | 
postgres=# \q
> psql -U sally
Password for user sally:
psql: error: could not connect to server: FATAL:  password authentication failed for user "sally"

如果我写 psql$ sudo su - postgres(在 ubuntu 中)

它会询问我的 Windows 用户名(恭敬地):

Password for user xyz:

[sudo] password for xyz:

这是我的pg_hba.conf

...
# local      DATABASE  USER  METHOD  [OPTIONS]
# host       DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostssl    DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostnossl  DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
#
...
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

【问题讨论】:

【参考方案1】:

在连接时添加-h 127.0.0.1,或在pg_hba.conf 中添加local 规则。

此外,如果它与用户名不同,请指定所需的数据库名称:-d <dbname>

【讨论】:

我不知道为什么我的电脑这么奇怪,它确实连接到数据库,只有在我登录到'postgres'和create database sally(相同的用户名和数据库):sally=>,和我还测试了我是否create database mydb 它又给了我psql: error: could not connect to server: FATAL: password authentication failed for user "mydb" 我还注意到 在与所有者 sally 创建数据库之前如果我尝试以 psql -U sally -h 127.0.0.1 连接我得到 = psql: error: could not connect to server: FATAL: database "sally" does not exist 为什么它在寻找数据库,当我 1. 创建用户, 2. 尝试连接到USER? 在连接时指定数据库名称,否则 psql 将寻找与用户同名的数据库。可能是postgres,所以在命令末尾添加-d postgres 或只是postgres

以上是关于无法在 postgresql 中创建用户的主要内容,如果未能解决你的问题,请参考以下文章

无法在 postgresql 中创建用户

从 Python 程序中创建 PostgreSQL 角色/用户

在 Postgresql 中创建基于角色的身份验证系统

在 Elastic Beanstalk Postgresql 中创建 Django 超级用户

如何在 PostgreSQL 中创建只读用户?

如何使用 init.sql 在 Postgresql 中创建数据库、模式和表