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:\Windows\System32\drivers\etc\hosts文件。
方法三:
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作用相同,主要用於設備給自己發送報文。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM