暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【从Oracle到PG】PostgreSQL访问认证问题处理

pg数据库安装完成后,默认只支持回环地址本地认证,即只能通过127.0.0.1在服务端localhost本地登录。需要修改认证配置才可以实现其他方式的认证登录。


关于pg的安装,可参考上一篇文章:

【从Oracle到PG】PostgreSQL-11.5源码编译安装


区别于Oracle只需要listener.ora即可实现相关的监听配置,postgresql需要通过postgresql.conf参数文件中listen_addresses参数并结合pg_hba.conf一起作用来控制客户端的访问,和Oracle的listener.ora和sqlnet.ora一起的作用相类似。


在修改相关认证配置之前,采用host网络认证方式登录会直接报错:


    [postgres@akendb01]$psql -p5432 -h192.168.1.108
    2019-08-27 12:27:21.528 CST [11753] FATAL: no pg_hba.conf entry for host "192.168.1.108", user "postgres", database "postgres", SSL off
    psql: FATAL: no pg_hba.conf entry for host "192.168.1.108", user "postgres", database "postgres", SSL off
    [postgres@akendb01]$



    这需要在pg_hba.conf文件将IP地址加入到host认证方式中:


      # TYPE  DATABASE        USER            ADDRESS                 METHOD
      hostssl all all 192.168.1.108/32 md5

      上述配置的意思为:允许所有DB用户通过ip-192.168.1.108以hostssl密码验证的方式访问PostgreSQL实例中的任意database。



      这时直接使用如下host访问依旧会报错:

        [postgres@akendb01]$psql -p5432 -h192.168.1.108
        psql: could not connect to server: Connection refused
        Is the server running on host "192.168.1.108" and accepting
        TCP/IP connections on port 5432?
        [postgres@akendb01]$vi postgresql.conf


        这里访问被拒绝,是因为postgresql.conf文件listen_addresses默认只允许localhost本地访问,需要将该参数值做相应修改:

          listen_addresses='*'
          port=5432


          修改listen_addresses需要重启才能生效,参数port则只需重新reload加载参数配置文件即可生效。


            [postgres@akendb01]$pg_ctl restart


            [postgres@akendb01]$psql -p5432 -h192.168.1.108
            Password for user postgres:
            psql (11.5)
            Type "help" for help.


            (postgres@192.168.1.108:5432)[postgres]#



            当客户端程序访问PostgreSQL服务端的时候,Postmaster进程充当了Oracle中listener的角色,在fork对应的服务进程之前会检测客户端请求是否符合pg_hba.conf中的验证方法,符合情况下fork出后端进程backend process处理客户端的请求,类似于Oracle的service process。


            关于pg认证方法的更多信息,参数postgresql官方文档:

            https://www.postgresql.org/docs/current/static/auth-methods.html


            欢迎投稿



                    中国开源软件推进联盟PostgreSQL分会,欢迎大家积极投稿,向PGer分享自己的实践经验、心得体会,共建PG中国生态。

            投稿邮箱:

            press@postgresqlchina.com


            文章转载自开源软件联盟PostgreSQL分会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论