2

我在本地 postgres 服务器中导入了一个 postgres 数据库。我必须使用名为 setup.local 的文件连接到数据库(以允许 django 检索数据)。

需要指定:DB_HOST=localhost, DB_NAME, DB_USER, DB_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 数据库是否有密码或者只是角色/用户有密码并使用它们来访问数据库?

安德烈亚

4

2 回答 2

1

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

也可以看看:

于 2018-07-24T14:01:40.107 回答
0

DB_HOST=localhost是这里的关键。查看pg_hba.conf您最有可能发现的ident针对localhost连接的问题。

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

当为本地(非 TCP/IP)连接指定 ident 时,将使用对等身份验证(参见第 20.3.6 节)。

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

对等身份验证方法通过从内核获取客户端的操作系统用户名并将其用作允许的数据库用户名(带有可选的用户名映射)来工作。此方法仅在本地连接上受支持。

于 2018-07-24T13:55:14.383 回答