postgreSQL 认证方式
Posted 豁然高
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postgreSQL 认证方式相关的知识,希望对你有一定的参考价值。
postgreSQL的认证配置文件
pg_hba.conf
配置文件pg_hba.conf的位置
pg_hba.conf
可以出现在许多其他地方,具体取决于Pg的安装方式。
通常情况下路径为
/etc/postgresql/[VERSION]/main/pg_hba.conf
通过shell命令获得
psql -t -P format=unaligned -c ‘show hba_file‘;
通过posqgreSQL控制台命令show hba_file获得
postgres=# show hba_file; hba_file ------------------------------------- /etc/postgresql/12/main/pg_hba.conf (1 row)
配置文件的内容范例
# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 ident # Allow replication connections from localhost, by a user with the # replication privilege. local replication all peer host replication all 127.0.0.1/32 ident host replication all ::1/128 ident
认证方式详解(METHOD)
1.trust
无条件地允许连接。这种方法允许任何可以与PostgreSQL数据库服务器连接的主机以任意PostgreSQL数据库用户身份登入,而不需要口令或者其他任何认证。
当hba_file中的method为trust时,则hba_file中指定的IP主机可以以任何的数据库用户名登录而不需要密码
2.reject
无条件地拒绝连接。这有助于从一个组中"过滤出"特定主机,例如一个reject行可以阻塞一个特定的主机连接,而后面一行允许一个特定网络中的其余主机进行连接。
3.md5
要求客户端提供一个 MD5 加密的口令进行认证。
4.password
要求客户端提供一个未加密的口令进行认证。因为口令是以明文形式在网络上发送的,所以我们不应该在不可信的网络上使用这种方式
5.ident
通过联系客户端的 ident 服务器获取客户端的操作系统名,并且检查它是否匹配被请求的数据库用户名。Ident 认证只能在 TCIP/IP 连接上使用。当为本地连接指定这种认证方式时,将用 peer 认证来替代。
(远程操作系统的当前用户名和数据库的用户名一致时,可以直接使用此用户名登录而不需要密码)
6.peer
从操作系统获得客户端的操作系统用户,并且检查它是否匹配被请求的数据库用户名。这只对本地连接可用。
(本地操作系统的当前用户名和数据库的用户名一致时,可以直接使用此用户名登录而不需要密码)
7. gss
用 GSSAPI 认证用户。只对TCP/IP 连接可用。
8.sspi
用 SSPI 来认证用户。只在Windows 上可用。
9.ldap
使用LDAP服务器认证。
10.radius
用 RADIUS 服务器认证。
11.cert
使用 SSL 客户端证书认证。
12.pam
使用操作系统提供的可插入认证模块服务(PAM)认证。
13.bsd
使用由操作系统提供的 BSD 认证服务进行认证。
以上是关于postgreSQL 认证方式的主要内容,如果未能解决你的问题,请参考以下文章
[转帖]PostgreSQL ident和peer基于操作系统用户的认证
PostgreSQL 12.2 公开课及视频及PGCE认证(第9期)(CUUG)(2020年)
PostgreSQL远程连接配置管理/账号密码分配(解决:致命错误: 用户 "postgres" Ident 认证失败)