PostgreSQL14 本地用户连接数据库问题
系统环境说明:centos7 ,PostgreSQL14
一 本地创建用户无法连接问题
- 以 postgres用户运行 psql
# 创建数据库用户
postgres=# create user testuser;
# 切换到新创建的用户testuser
\c - testuser;
connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "testuser"
- 查看 pg_hba.conf 文件 ,客户端认证配置文件(HBA表示基于主机的认证)
# type database user address method
....
# "local" is for Unix domain socket connections only
local all all peer
....
由配置文件的内容可知,本地的默认连接认证方式是peer,就是利用操作系统的用户来连接数据库。在这种配置方式下,数据库的用户必须同时是操作系统的用户,才可以在本地连接PG数据库。
二 解决方法
1 修改pg_hba.conf 文件,改变本地连接的认证方式,peer改为trust,然后重新启动数据库。
vim pg_hba.conf
.....
# "local" is for Unix domain socket connections only
local all all trust
......
2 在操作系统中创建同名用户,保持pg_hba.conf 文件本地连接的默认认证方式peer。
[postgres@centOS7-mini ~]$ psql -d postgres -U testuser
或
[postgres@centOS7-mini ~]$ psql
postgres=# \c - testuser
三 本地快捷连接方法
保持pg_hba.conf 文件本地连接的默认认证方式peer,通过创建操作系统用户以及与同名的数据库、同名的数据库用户,即可实现快捷访问。
例
#在操作系统下创建用户
useradd testuser
#切换到PG的超级用户。
su - postgres
#以超级用户运行psql
psql
#创建与操作系统用户同名的数据库。
create database testuser;
#创建与数据库同名的用户。
create user testuser;
#退出psql
#从系统下切换到testuser。
su - testuser
#快捷运行psql,psql会以testuser用户连接同名的数据库testuser
psql
ok