postgres 使用数据库密码或用户密码

postgres uses a database password or a user password

我在本地 postgres 服务器中导入了一个 postgres 数据库。 我必须使用名为 setup.local.

的文件连接到数据库(以允许 django 检索数据)

需要指定:DB_HOST=localhostDB_NAMEDB_USERDB_PASSWORD

DB_HOST毫无疑问是localhost。 DB_name是我选择导入的(psql imported_db < downloaded_DB)

DB_USER 是 my_name(或者我可以更改所有者 ALTER DATABASE imported_db OWNER TO other_name)。

对我来说,重要的是我必须使用用户(my_name 或 other_name)密码而不是数据库密码(即使变量名是 DB_PASSWORD).

那么问题来了: psql 数据库有密码还是只有 roles/users 有密码并使用它们来访问数据库?

安德里亚

DB_HOST=localhost 是这里的关键。查看 pg_hba.conf,您很可能会发现 ident 反对 localhost 连接。

https://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-IDENT

When ident is specified for a local (non-TCP/IP) connection, peer authentication (see Section 20.3.6) will be used instead.

https://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-PEER

The peer authentication method works by obtaining the client's operating system user name from the kernel and using it as the allowed database user name (with optional user name mapping). This method is only supported on local connections.

仅为 USERROLE 设置了密码。根据 ROLE 的 GRANT,一个用户可以访问多个数据库。

另请参阅: