由没有密码的用户连接到 Postgres DB
Posted
技术标签:
【中文标题】由没有密码的用户连接到 Postgres DB【英文标题】:Connect to Postgres DB by a user which has no password 【发布时间】:2020-10-28 00:06:57 【问题描述】:我通过以下方式创建了一个用户:
sudo -u postgres psql -c "CREATE USER sample;"
然后创建了一个数据库:
sudo -u postgres psql -c "CREATE DATABASE practice OWNER sample;"
现在我正在尝试通过以下 sn-p 连接到该数据库:
dsn := url.URL
User: url.UserPassword("sample", ""),
Scheme: "postgres",
Host: fmt.Sprintf("%s", "localhost"),
Path: "practice",
RawQuery: (&url.Values"sslmode": []string"disable").Encode(),
db, err := gorm.Open(
"postgres",
dsn.String(),
)
if err != nil
log.Fatal(err)
但是输出是:
2020/07/07 16:43:44 pq: password authentication failed for user "sample"
如何使用没有密码的用户连接数据库?
【问题讨论】:
【参考方案1】:要么为用户分配一个密码然后使用它,要么更改您的 pg_hba.conf 文件以便 some other method of authentication 用于该用户/dbname/connection-method/host(然后重新启动您的服务器以使更改生效)。
sudo -u postgres psql -c "ALTER USER sample password 'yahkeixuom5R';"
【讨论】:
我可以使用 Python 和 SQLAlchemy 通过postgresql://sample:@/practice
连接到 db,而我没有更改 pg_hba.conf
中的任何内容。所以我不明白为什么无法连接。您对通过psql
与没有密码的用户连接有什么想法吗?
@shayanrokrok 您的应用指定了“localhost”,它使用 pg_hba 中的“主机”行,而 @/ 使用的是 unix 域套接字,它使用 pg_hba 中的“本地”行。他们显然指定了不同的东西。
你说的太对了。正确的 URL 是:postgresql://sample:@localhost/practice
。以上是关于由没有密码的用户连接到 Postgres DB的主要内容,如果未能解决你的问题,请参考以下文章
致命:连接到 postgres 时用户“postgres”的密码验证失败
pg Admin 4 - 尝试连接到 PostgreSQL 13 服务器时“postgres”用户的密码
org.postgresql.util.PSQLException:致命:从 Spring Boot 连接到 postgres 时用户“postgres”的密码验证失败
使用域用户(AD 用户)连接到没有密码的 SQL Server