2011-07-10 28 views
8

Trong pg_hba.conf, tôi cóPostgreSQL pg_hba.conf Issue

host all    all    127.0.0.1/32   md5 
host all    all    samenet   md5 

Tôi cũng đã thêm

host all    all    samehost   md5 

trên cả hai.

Tôi đang sử dụng pgAdminIII, thử tạo "Đăng ký máy chủ mới". Khi tôi kết nối với (localhost), nó hoạt động tốt. Nhưng khi tôi thay đổi máy chủ tên trạm làm việc thực tế nó nói:

FATAL: no pg_hba.conf entry for host "fe80::c81c:9e9c:6570:d0bf%20", user "postgres", database "postgres", SSL off 

Thông tin bổ sung

  • Hệ điều hành: Windows 7 Ultimate 32 bit
  • PostgreSQL server 9.0.2

Bất kỳ trợ giúp nào về điều này sẽ được đánh giá cao.

+0

Đó là vì khi bạn cố gắng kết nối, bạn đang kết nối với địa chỉ IPv6, không phải địa chỉ IPv4 và địa chỉ IPv6 của bạn không tồn tại trong tệp pg_hba.conf của bạn. Thêm địa chỉ IPv6 của bạn vào pg_hba.conf và tải lại PostgreSQL. – Sean

+1

cố gắng thêm bạn IP trên pg_hba.conf, giống như "lưu trữ tất cả các fe80 :: c81c: 9e9c: 6570: d0bf/128 md5" – Igor

+1

Theo hướng dẫn, "samenet" khớp với bất kỳ địa chỉ nào trong bất kỳ mạng con nào máy chủ được kết nối trực tiếp với, và "cùng một" phù hợp với bất kỳ địa chỉ IP của máy chủ, tôi đã thử cả hai không có may mắn. –

Trả lời

3

Lưu ý rằng mã liệt kê giao diện samehostsamenet dựa vào phụ thuộc vào nền tảng. (Hiện tại có 5 triển khai riêng biệt cho các nền tảng khác nhau.) Vì vậy, những gì làm việc cho một thiết lập có thể không hoạt động ở nơi khác.

Điều đó nói rằng, các thiết lập tương tự như làm việc cho tôi trên Linux, có nghĩa là, tôi có thể kết nối đến máy chủ cơ sở dữ liệu trên máy chủ địa phương sử dụng

psql -d postgres -h 'fe80::xxxx:xxxx:xxxx:xxxx%eth0' 

sau khi cài đặt listening_addressessamenet một cách thích hợp.

Vì vậy, có thể hiểu rằng mã liệt kê giao diện trong Windows bằng cách nào đó không bao gồm địa chỉ liên kết cục bộ.

Nếu bạn đã tách biệt vấn đề này đủ, tôi sẽ gửi báo cáo lỗi tới PostgreSQL để phân tích thêm vấn đề.

1

Tôi đã gặp sự cố tương tự và đã giải quyết vấn đề bằng cách tắt hỗ trợ ipv6 trên cả hai máy. Không chắc chắn nếu đây là một lựa chọn cho bạn.

4

này đã được trả lời của thành viên khác ở đây, nhưng tôi muốn để hiển thị các câu trả lời ở đây để làm rõ ràng hơn đối với những người khác:

Trong pg_hba.conf, thêm địa chỉ ipv6 của bạn như thế này:

host  all  all  fe80::c81c:9e9c:6570:d0bf/128  md5 

fe80 :: c81c: 9e9c: 6570: d0bf là địa chỉ ipv6 của bạn.

1

Bạn cũng có thể sử dụng

host  all  all  ::1/128  md5 

cho localhost.

0

Tắt IPV6 trên bộ điều hợp mà bạn có thể. Sau đó, làm

netsh interface teredo set state disabled 

Điều này sẽ vô hiệu hóa các giao diện mạng ảo mà bạn không thể thấy từ GUI.