我正在尝试在一台新的(Linux Mint)电脑上安装 PostgreSQL。一切正常,直到我尝试访问数据库。当我以自己的用户身份访问数据库时,出现了以下(预期的)错误:
$ psql
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: role "me" does not exist
这很合理,因为 Linux 上有一个单独的postgres
用户拥有数据库访问权限。我尝试使用它们:
$ sudo su postgres
[sudo] password for me:
$ psql
Password for user postgres: psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: fe_sendauth: no password supplied
这时我有点困惑:postgres
用户应该可以无密码访问所有 PostgreSQL 数据库。此外,我尝试设置pg_hba.conf
文件以允许所有用户本地访问:
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
但是,即使在我重新启动 PostgreSQL (使用/etc/init.d/postgresql reload
)之后,系统仍然提示我输入用户的数据库密码postgres
。
谁能帮助我理解:
postgres
当我尝试以用户身份(全新安装)访问数据库时,为什么会提示我输入密码?- 为什么即使将 IPv4/IPv6 本地连接设置为 后仍然会收到提示
trust
? - 我怎样才能使我的
postgres
用户像其他 Linux 系统一样(即没有任何数据库密码,但仍然能够访问所有数据库)