基于PostgreSQL pg_hba.conf 配置参数的使用说明

 更新时间:2021年01月06日 11:05:13   作者:将臣三代  
这篇文章主要介绍了基于PostgreSQL pg_hba.conf 配置参数的使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

pg_hba.conf 配置详解

该文件位于初始化安装的数据库目录下

编辑 pg_hba.conf 配置文件

postgres@clw-db1:/pgdata/9.6/poc/data> vi pg_hba.conf

TYPE 参数设置

TYPE 表示主机类型,值可能为:

若为 `local` 表示是unix-domain的socket连接,

若为 `host` 是TCP/IP socket

若为 `hostssl` 是SSL加密的TCP/IP socket

DATABASE 参数设置

DATABASE 表示数据库名称,值可能为:

`all` ,`sameuser`,`samerole`,`replication`,`数据库名称` ,或者多个

数据库名称用 `逗号`,注意ALL不匹配 replication

USER 参数设置

USER 表示用户名称,值可以为:

`all`,`一个用户名`,`一组用户名` ,多个用户时,可以用 `,`逗号隔开,

或者在用户名称前缀 `+` ;在USER和DATABASE字段,也可以写一个单独的

文件名称用 `@` 前缀,该文件包含数据库名称或用户名称

ADDRESS 参数设置

该参数可以为 `主机名称` 或者`IP/32(IPV4) `或 `IP/128(IPV6)`,主机

名称以 `.`开头,`samehost`或`samenet` 匹配任意Ip地址

METHOD 参数设置

该值可以为

"trust", "reject", "md5", "password", "scram-sha-256",
"gss", "sspi", "ident", "peer", "pam", "ldap", "radius" or "cert"

注意 若为`password`则发送的为明文密码

注意

修改该配置文件中的参数,必须重启 `postgreSql`服务,若要允许其它IP地址访问

该主机数据库,则必须修改 `postgresql.conf` 中的参数 `listen_addresses` 为 `*`

重启:pg_ctl reload 或者 执行 SELECT pg_reload_conf()

配置以下参数

# TYPE DATABASE USER  ADDRESS   METHOD
host all  all  10.10.56.17/32  md5

"pg_hba.conf" 99L, 4720C 

参数说明

host 参数表示安装PostgreSQL的主机

all 第一个all 表示该主机上的所有数据库实例

all 第二个all 表示所有用户

10.10.56.17/32 表示需要连接到主机的IP地址,32表示IPV4

md5 表示验证方式

即上述表示允许IP地址为10.10.56.17的所有用户可以通过MD5的密码验证方式连接主机上所有的数据库

也可以指定具体的数据库名称和 用户

# TYPE DATABASE USER  ADDRESS   METHOD
host test  pgtest  10.10.56.17/32  md5

即表示允许地址为 10.10.56.17 的用户 pgtest通过 MD5方式 加密的密码方式连接主机上的 test 数据库

也可以指定整个网段

# TYPE DATABASE USER  ADDRESS   METHOD
host test  pgtest  0.0.0.0/0  md5

即表示允许 任意iP 通过用户名为 pgtest 和md5的 密码 验证方式连接主机上 test 的数据库

不进行密码验证

# TYPE DATABASE USER  ADDRESS   METHOD
host test  pgtest  0.0.0.0/0  trust

表示任意IP地址的用户 pgtest 无需密码验证可直接连接访问该主机的 test 数据库

补充:postgresql配置文件pg_hba.conf配置、修改postgresql超级用户的密码

postgresql设置了用户名和密码,却发现不输入密码、或者密码输错都能登录。于是在网上查,知道了原来是配置文件pg_hba.conf的问题。

1.修改pg_hba.conf文件,使得数据库认证方式为加密登录

以下命令可以查找pg_hba.conf的路径

[root@localhost ~]# find / - name pg_hba.conf

进入到该配置文件中

[root@localhost ~]# vi /home/postgres/pgsql/data/pg_hba.conf

发现配置文件中内容是全部注释掉的,如下:

# local DATABASE USER METHOD [OPTIONS]
# host DATABASE USER ADDRESS METHOD [OPTIONS]
# hostssl DATABASE USER ADDRESS METHOD [OPTIONS]
# hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]

以上相当于postgreql用户可以免密登录,在末尾加上

host all all 0.0.0.0/0 md5

要求客户端提供一个 MD5 加密的口令进行认证,即必须有密码才能登录

修改完pg_hba.conf文件后保存退出,输入命令使配置生效

(1) 第一种生效方法

[root@localhost data]# service postgresql reload

以上命令执行后会出现以下提示信息:

Reload PostgreSQL: OK

说明pg_hba.conf配置文件的 修改已生效。

在客户端连接数据库,需要输入账户和对应密码才可以登录。pd_Admin连接数据库时,若选了保存密码,则C:\Users***\AppData\Roaming\postgresql路径下,pg_class.conf中会保存密码,可以查看。

一般情况下,Appdata文件夹是隐藏的 ,需要在计算机设置中显示隐藏文件,具体方法自行百度。

(2) 第二种生效方法

备注:隔几天后准备更改另外一台服务器的连接验证方式,发现用以上方法对pg_hba.conf的修改生效时报错。具体报错如下:

[root@localhost data]# service postgresql reload
postgresql: unrecognized service

在网上查资料后,进行以下尝试。

① 切换到postgres用户

[root@localhost ~]# su - postgres 
-bash-4.1$ pwd
/var/lib/pgsql
-bash-4.1$ ls
-bash-4.1$ 9.5
-bash-4.1$ cd *
-bash-4.1$ ls
backups data pgstartup.log

②使用pg_ctl命令对文件生效

-bash-4.1$ ./pg_ctl reload
pg_ctl: no database directory specified and environment variable PGDATA unset 
Try "pg_ctl --help" for more information.

报错如上,需要在reload后添加data文件夹所在的路径

-bash-4.1$ ./pg_ctl reload -D /var/lib/pgsql/9.5/data
server signaled 

出现以上提示:server signaled时说明配置生效

2.修改postgresql默认超级用户postgres的密码

首先以postgres用户登录postgresql数据库

[root@localhost ~]# sudo -u postgres psql

接着修改postgresql的登录密码,结尾必须有分号";",否则修改无效,执行命令后也不会出现ALTER ROLE。

postgres =# alter user postgres with password '****';

以上命令执行后,会出现

ALTER ROLE

说明修改生效,接着退出postgresql

postgres =# \q

到此超级用户postgres的密码修改完成,可在pgAdmin客户端进行验证。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • PostgreSql新手必学入门命令小结

    PostgreSql新手必学入门命令小结

    这篇文章主要介绍了PostgreSql新手必学入门命令小结,本文讲解了命令行登录数据库、查看帮助、常用命令等内容,需要的朋友可以参考下
    2015-02-02
  • 如何将postgresql数据库表内数据导出为excel格式(推荐)

    如何将postgresql数据库表内数据导出为excel格式(推荐)

    这篇文章主要介绍了如何将postgresql数据库表内数据导出为excel格式(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • postgresql数据库表ID自增的实现代码

    postgresql数据库表ID自增的实现代码

    postgresql数据库可以创建主键,但是没有像mysql那样直接指定主键自增的auto_increment关键字,因此如果在postgresql中创建表指定主键自增使用auto_increment会报错,本文通过一个实例给大家演示自增ID的实现,需要的朋友可以参考下
    2023-12-12
  • postgresql 计算两点距离的2种方法小结

    postgresql 计算两点距离的2种方法小结

    这篇文章主要介绍了postgresql 计算两点距离的2种方法小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • postgres array_to_string和array的用法讲解

    postgres array_to_string和array的用法讲解

    这篇文章主要介绍了postgres array_to_string和array的用法讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL教程(十四):数据库维护

    PostgreSQL教程(十四):数据库维护

    这篇文章主要介绍了PostgreSQL教程(十四):数据库维护,本文讲解了恢复磁盘空间、更新规划器统计、VACUUM和ANALYZE的示例、定期重建索引等内容,需要的朋友可以参考下
    2015-05-05
  • PgSQL条件语句与循环语句示例代码详解

    PgSQL条件语句与循环语句示例代码详解

    这篇文章主要介绍了PgSQL条件语句与循环语句,pgSQL中有两种条件语句分别为if与case语句,每种语句通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 浅谈PostgreSQL表分区的三种方式

    浅谈PostgreSQL表分区的三种方式

    随着使用时间的增加,数据库中的数据量也不断增加,因此数据库查询越来越慢。加速数据库的方法很多,如添加特定的索引,将日志目录换到单独的磁盘分区,调整数据库引擎的参数等。本文即将介绍的数据库表分区即能达到此效果
    2021-06-06
  • PostgreSQL归档配置及自动清理归档日志的操作

    PostgreSQL归档配置及自动清理归档日志的操作

    这篇文章主要介绍了PostgreSQL归档配置及自动清理归档日志的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL向数据库表中添加行数据的操作

    PostgreSQL向数据库表中添加行数据的操作

    这篇文章主要介绍了PostgreSQL向数据库表中添加行数据的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02

最新评论