• IPv6导致pgAdmin以localhost方式连接本地pg数据库失败


    一、问题现象:

    在湖南麒麟3.2系统中,使用PgAdmin使用localhost 连接本机安装的数据库,连接失败,但使用127.0.0.1连接成功。

    二、解决方法

    根据错误提示图,是指pg_hba.conf配置文件中不允许IPv6回环地址访问数据库,所以修改配置文件如下:

    三、问题解决

    1)检查postgresql的pg_hba.conf配置文件,如下:

    根据文件,可以确认127.0.0.1肯定是可以连接成功的。需要确认的是在用localhost的连接时,实际映射的ip是什么?
    2)确认localhost对应的ip地址
    方法一:(简单可靠)
    执行ping localhost,看打印信息
    方法二:
    linux下查看/etc/hosts文件,查看ip和地址的映射关系
    windows下查看C:WindowsSystem32driversetchosts文件。
    方法三:
    linux下ifconfig -a,可以本机回环地址。
    可以知道所用的麒麟系统,localhost对应的ip地址为:****
    3)再次确认pg数据库的配置
    明确localhost对应的IP地址后,再次检查pg_hba.conf文件,发现
    #host all all ::1/128 md5,即不允许ipV6访问,所以找到问题的根源了,将本行的注释符号去掉,然后重启postgresql即可。
    4)测试
    pgsql -h localhost -u smartsys -d smartsys0714,连接成功。

    四、扩展

    遇到这个问题,第一反应没有想到是哪里的原因。理所当然的认为localhost就是127.0.0.1,忽略了IPV6。所以对ipV4、ipV6、localhost等概念更系统的学习了一下。

    1)IPV4

    IPV4:Internet Protocol version 4,网际协议第4版,ipV4采用32位2进制位表示地址,所以共可以表示2^32个地址,IPv4通常用点分十进制记法书写,例如192.168.0.1,其中的数字都是十进制的数字,中间用实心圆点分隔。一个IPv4地址可以分为网络地址和主机地址两部分,其中网络地址可以使用如下形式描述:192.168.0.0/16,其中斜线后的数字表示网络地址部分的长度是16位,这对应2个字节,即网络地址部分是192.168.0.0。

    2)IPV6

    IPV6:Internet Protocol version 6,网际协议第6版,IPV6采用128位2进制位表示地址,所以共可以表示2^128个地址。IPv6有3种表示方法:1)冒分十六进制表示法;2)0位压缩表示法;3)内嵌IPV4地址表示法,这里不详细介绍。

    3)localhost

    localhost指"本地主机",指"这台计算机"。localhost是回路网络接口(loopback)的一个标准主机名,相对应的IP地址为127.0.0.1(IPv4)和[::1](IPv6)。IP与localhost的对应关系可以修改。

    4)回环地址

    IPv6中的环回地址即 0:0:0:0:0:0:0:1/128 或者::1/128。环回与IPv4中的127.0.0.1作用相同,主要用于设备给自己发送报文。

  • 相关阅读:
    vue-lazyLoad 图片懒加载
    div块居中
    OpenFire源码学习之三十三:windows打包
    OpenFire源码学习之三十二:使用Tsung测试openfire(下)
    OpenFire源码学习之三十一:使用Tsung测试openfire(上)
    OpenFire源码学习之三十:haproxy负载均衡
    OpenFire源码学习之二十八:与其他系统的用户整合
    OpenFire源码学习之二十七:Smack源码解析
    OpenFire源码学习之二十六:Spark&Tinder
    OpenFire源码学习之二十五:消息回执与离线消息(下)
  • 原文地址:https://www.cnblogs.com/21summer/p/11361958.html
Copyright © 2020-2023  润新知