psql: error: FATAL: Peer authentication failed for user “postgres“

在CentOS8上安装PostgreSQL后,尝试连接数据库时遇到FATAL: Peer authentication failed for user postgres的错误。原因是PostgreSQL默认使用peer认证方式,要求操作系统用户名与数据库用户名一致。为解决此问题,需要修改pg_hba.conf文件,将本地认证方式改为trust,重启PostgreSQL服务,然后设置新密码并重新调整pg_hba.conf文件,再次重启服务,实现正常登录。

psql: error: FATAL: Peer authentication failed for user “postgres”

引言:在 CentOS 8 完成 PostgresQL 的安装后初始化数据库后在命令行连接到 PostgresQL 数据库时, 出现的异常问题。

操作系统环境:在这里插入图片描述
PostgresQL 版本:
在这里插入图片描述
连接命令:

psql -U postgres

出现的问题:

psql: error: FATAL:  Peer authentication failed for user "postgres"

原因:安装完 PostgresQL 后, PostgresQL 连接时的默认认证方式为 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.
 大概意思就是使用 peer 方式的认证方式, PostgresQL 会从操作系统内核中获取当前的用户名并且作为允许连接的用户名进行认证,这种方式仅仅适用于本地连接。

由于我们这里的登录名并不是对应的用户名, 因此出现了以上认证失败的信息。

解决方案:
修改本地连接登录的认证方式:
1)找到 PostgresQLdata 目录下的 pg_hba.conf 文件。一般情况下, PostgresQL 的默认 data 问价目录在 /var/lib/ 目录下, 也可以使用以下命令找到对应位置:

sudo find / -name pg_hba.conf

 输入命令 updatedb 更新以下数据库文件即可。
2)然后编辑 pg_hba.conf 文件, 由于 CentOS 8 默认是安装了 vim 的, 因此直接使用 vim 即可:

sudo vim pg_hba.conf

在这里插入图片描述
把本地的认证方式从 peer 改为 trust

3)然后再重新启动 PostgresQL 服务:

sudo systemctl restart postgresql-13.service

4)再次输入登录命令:

psql -U postgres

这次可以直接登录进入 postgres 数据库,修改对应的用户密码:

ALTER USER 'user_name' WITH PASSWORD 'new_password';

这里的 user_name 是登录的用户名, 这里我们登录的用户名是 postgresnew_password 为修改后的密码。

5) 退出当前数据库(\q 命令), 重新编辑 pg_hba.conf 文件:
在这里插入图片描述
6)再次重新启动 PostgresQL 服务:

sudo systemctl restart postgresql-13.service 

即可输入登录命令进行正常的认证登录。

当在 IntelliJ IDEA 连接 PostgreSQL 时出现 `password authentication failed for user "postgres"` 错误,通常是由于密码输入错误、PostgreSQL 配置问题等原因导致,以下是常见的解决办法: ### 1. 确认密码是否正确 - 检查在 IntelliJ IDEA 中输入的 `postgres` 用户密码是否正确。可以通过以下方式验证: - 打开 PostgreSQL 的命令行工具(如 `psql`),使用 `postgres` 用户登录: ```bash psql -U postgres -d postgres ``` 输入密码,如果能成功登录,说明密码无误;若登录失败,需要重置密码。 ### 2. 重置 `postgres` 用户密码 - 在命令行中使用 `psql` 登录到 PostgreSQL: ```bash sudo -u postgres psql ``` - 在 `psql` 中,使用以下命令重置 `postgres` 用户的密码: ```sql ALTER USER postgres WITH PASSWORD 'new_password'; ``` 其中 `new_password` 是你要设置的新密码。 ### 3. 检查 `pg_hba.conf` 文件配置 - `pg_hba.conf` 文件控制着 PostgreSQL 的客户端认证方式。找到该文件(通常位于 `/var/lib/pgsql/data/pg_hba.conf` 或 `/etc/postgresql/<version>/main/pg_hba.conf`),检查是否允许 `postgres` 用户从相应的 IP 地址连接。 - 对于本地连接,确保有类似以下的配置: ```plaintext host all all 127.0.0.1/32 md5 host all all ::1/128 md5 ``` `md5` 表示使用 MD5 加密的密码认证方式。修改后,需要重启 PostgreSQL 服务: ```bash sudo systemctl restart postgresql ``` ### 4. 检查 IntelliJ IDEA 连接配置 - 打开 IntelliJ IDEA 的数据库连接设置,确保以下信息正确: - **主机**:通常是 `localhost` 或 `127.0.0.1`。 - **端口**:默认是 `5432`。 - **数据库**:例如 `postgres`。 - **用户名**:`postgres`。 - **密码**:使用重置后的新密码。 ### 5. 检查 PostgreSQL 服务状态 - 确保 PostgreSQL 服务正在运行: ```bash sudo systemctl status postgresql ``` 如果服务未运行,使用以下命令启动: ```bash sudo systemctl start postgresql ``` ### 6. 防火墙设置 - 检查防火墙是否阻止了 PostgreSQL 的端口(默认是 5432)。如果是,需要开放该端口: ```bash sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent sudo firewall-cmd --reload ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值