热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Postgresql客户端连接的问题

做程序调用postgresql数据库的时候,后台出现这么一条错误:java.sql.SQLException:Nopg_hba.confentryforhost210.230.203.160,userpostgres,databaserinri01这条错误是什么意思?为什么会出现呢?这条错误的原因是因为客户端远程访问p
   做程序调用postgresql数据库的时候,后台出现这么一条错误:

     java.sql.SQLException: No pg_hba.conf entry for host 210.230.203.160, user postgres, database rinri01

   这条错误是什么意思?为什么会出现呢?
这条错误的原因是因为客户端远程访问postgresql受限所致,因为postgresql默认情况下除本机外的机器是不能连接的,下

面我们就来分析并解决这个问题:

   默认情况下,postgresql本机的连接是信任连接,只要有用户名就可以连接,不用密码. 要改变这种默认设置需要更改

postgresql的两个配置文件(pg_hba.conf与postgresql.conf,这两个文件在initdb时指定的目录下,如:/usr/local/pgsql

/data(unix), windows系统时直接在postgresql的根目录的data目录下)

        文件
pg_hba.conf 的常用格式是一套记录,
        每行一条。空白行行被忽略,井号( # )开头的注释也被忽略。
        一条记录是由若干用空格和/或 tab 分隔的字段组成。
        如果字段用引号包围,那么它可以包含空白。记录不能跨行存在。
        每条记录声明一种联接类型,一个客户端 IP
地址范围(如果和联接类型相关的话),一个数据库名,一个用户名字,
        以及对匹配这些参数的联接使用的认证方法。
第一条匹配联接类型,客户端地址和联接企图请求的数据库名和用户名的记录将用于执行认证。
这个处理过程没有"跨越"或者"回头"的说法:如果选择了一条记录而且认证失败,
        那么将不考虑后面的记录。如果没有匹配的记录,那么访问将被拒绝。
        每条记录可以下面七种格式之一
local    
 database  user  authentication-method  [authentication-option]
host      
database  user  CIDR-address  authentication-method[authentication-option]
hostssl   
database  user  CIDR-address  authentication-method  [authentication-option]
hostnossl  database  user  CIDR-address  authentication-method  [authentication-option]
host      
database  user  IP-address  IP-mask  authentication-method  [authentication-option]
hostssl   
database  user  IP-address  IP-mask  authentication-method  [authentication-option]
hostnossl  database  user  IP-address  IP-mask  authentication-method  [authentication-option]

        各个字段的含义如下:
local
        这条记录匹配通过 Unix 域套接字进行的联接企图。
        没有这种类型的记录,就不允许 Unix 域套接字的联接。
host
        这条记录匹配通过 TCP/IP 进行的联接尝试。
        host 记录匹配 SSL 和非 SSL 的连接请求。
注意:        除非服务器带着合适的
[url=file:///mnt/usbg/lyb/books/postgresql/postgres8.0.zh_cn/runtime-config.html#GUC-LISTEN-ADDRESSES]listen_addresses[/url]
配置参数值启动,否则将不可能进行远程的 TCP/IP 连接,
       因为缺省的行为是只监听本地自环地址 localhost 的连接。
hostssl
        这条记录匹配使用 TCP/IP 的 SSL 联接企图。
        但必须是使用 SSL 加密的联接。
        要使用这个选项,制作服务器的时候必须打开 SSL
支持。而且在服务器启动的时候,
        必须SSL选项通过配置选项
[url=file:///mnt/usbg/lyb/books/postgresql/postgres8.0.zh_cn/runtime-config.html#GUC-SSL]ssl[/url]
打开。
hostnossl
           这个记录与 hostssl
有着正相反的逻辑:
           它只匹配那些在 TCP/IP 上不使用 SSL
的连接请求。
database
        声明记录所匹配的数据库。值
        all 表明该记录匹配所有数据库,
        值 sameuser表示如果被请求的数据库和请求的用户同名,则匹配。
        samegroup 表示请求的用户必须是一个与数据库同名的组中的成员。
        在其他情况里,这就是一个特定的 PostgreSQL 的名字。
        我们可以通过用逗号分隔的方法声明多个数据库。
        一个包含数据库名的文件可以通过对该文件前缀 @ 来声明。
user
        为这条记录声明所匹配的PostgreSQL用户。值 all
表明它匹配于所有用户。
        否则,它就是特定 PostgreSQL
        用户的名字。多个用户名可以通过用逗号分隔的方法声明。组名字可以通过用 +
做组名字前缀来声明。
        一个包含用户名的文件可以通过在文件名前面前缀 @ 来声明。该文件必需和
        pg_hba.conf 在同一个目录。
CIDR-address
       声明这条记录匹配的客户端机器的 IP 地址范围。它包含一个标准的点分十进制的
IP 地址和一个 CIDR 掩码长度。
       (IP 地址只能用数值声明,不能用域或者主机名。)
       掩码长度表示客户端 IP 地址必须匹配的高位二进制位数。
       在给出的 IP 地址里,这个长度的右边的二进制位必须为零。
       在 IP 地址,/,和 CIDR 掩码长度之间不能有空白。
       典型的 CIDR 地址是
172.20.143.89/32,这表明一个主机,
       或者 172.20.143.0/24 表示一个网络。
       要声明单个主机,给 IPv4 地址声明 CIDR 掩码 32,给 IPv6
地址声明 128。
       以 IPv4 格式给出的 IP 地址会匹配那些拥有对应地址的 IPv6
连接,比如
       127.0.0.1 将匹配 IPv6 地址
::ffff:127.0.0.1。
       一个以 IPv6 格式给出的记录将只匹配 IPv6 连接,即使对应的地址在
IPv4-in-IPv6
       范围内。请注意如果系统的 C 库不支持 IPv6 地址,那么 IPv6
的格式将被拒绝。
        这个域只适用于 host,hostssl 和 hostnossl
记录。
IP-address
IP-mask
       这些方法可以用于作为 CIDR-address
表示法的替补。
       它不是声明掩码的长度,而是在另外一个字段里声明实际的掩码。
       比如,255.0.0.0 表示 IPv4 CIDR 掩码长度 8,而
255.255.255.255 表示 CIDR 掩码长度 32。
       同样的匹配逻辑将用于一个点分的 IP-mask
       这些字段只适用于 host, hostssl,
       和 hostnossl 记录。
authentication-method(认证方法)
        声明通过这条记录联接的时候使用的认证方法。
trust
        无条件地允许联接。这个方法允许任何可以与PostgreSQL
        数据库服务器联接的用户以他们期望的任意
        PostgreSQL 数据库用户身份进行联接,而不需要口令。
reject
        联接无条件拒绝。常用于从一个组中"过滤"某些主机。
md5
        要求客户端提供一个 MD5 加密的口令进行认证。
crypt
        要求客户端提供一个 crypt() 加密的口令用于认证。
        7.2 以前的客户端只能支持 crypt。
        对于 7.2 以及以后的客户端,我们建议使用 md5。
password
        要求客户端提供一个未加密的口令进行认证。
        因为口令是以明文形式在网络上传递的,
        所以我们不应该在不安全的网络上使用这个方式。
krb4
        用 Kerberos V4 认证用户。只有在进行
TCP/IP 联接的时候才能用。
krb5
        用 Kerberos V5 认证用户。只有在进行
TCP/IP 联接的时候才能用。
ident
        获取客户的操作系统名(对于 TCP/IP
联接,用户的身份是通过与运行在客户端上的
        ident
服务器联接进行判断的,对于本地联接,它是从操作系统获取的。)
        然后检查一下,看看用户是否允许以要求的数据库用户进行联接,
        方法是参照在 ident 关键字后面声明的映射。
pam
        使用操作系统提供的可插入的认证模块服务 (Pluggable
Authentication Modules)
我的配置示例如下:
# 本机localhost使用信任连接
local  all    all    
   trust
#127.0.0.1与192.168.1.0~254段IP地址访问时需要口令验证
#要让本机外的机器访问,除了在这设置外还要把postgresql.conf
#里的监听地址设置为:listen_addresses = '*'
host    all     all 
   127.0.0.1/32    md5
host    all     all 
   192.168.1.0/24  md5

postgresql.conf文件内容

    为了使postgresql支持tcp/ip连接,要设置监听地址行,参考内容如下:
# - Connection Settings -
listen_addresses = '*'       
#port = 5432
max_connections = 100

重新启动服务,现在的postgresql就支持tcp/ip连接了,就可以用psql进行测试了.


推荐阅读
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 问题描述:域名已经备案,我全部都有,也在后台配置了,但是手机预览,还是请求失败,PC端是可以请求 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
author-avatar
婷518婷_239
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有