2012-12-26 30 views
11

Tôi đã cài đặt postgresql 9.2 trên linux (Kubuntu) và phiên bản cuối cùng của pgadmin3, nhưng khi tôi kết nối chúng tôi có lỗi này:pgAdmin mang lại cho tôi những lỗi: không có mật khẩu được cung cấp

Một lỗi đã xảy ra: Lỗi khi kết nối với máy chủ: fe_sendauth: không có mật khẩu nào được cung cấp

Tôi có thể làm gì?

Tôi cũng đã định cấu hình tomcat cho ứng dụng web của mình bằng java. Trong thực tế, postgresql đã làm việc trước khi thử ứng dụng của tôi.

+0

Bạn đã thử * cung cấp * mật khẩu đã yêu cầu chưa? –

+3

Mật khẩu của tôi trống, vì vậy tôi vừa nhập khi có yêu cầu. – DarkCoffee

+1

Bạn có thể thử kết nối từ dòng lệnh không? '$ psql -U -h ' bạn có thể thoát khỏi -h nếu bạn muốn kết nối bằng cách sử dụng ổ cắm miền unix. – Eelke

Trả lời

8

Yêu cầu mật khẩu phụ thuộc vào cài đặt của bạn trong pg_hba.conf. Và có nhiều cách khác nhau mà bạn có thể kết nối - các cài đặt khác nhau trong pg_hba.conf có thể áp dụng.

tôi trích dẫn các thiết lập giúp đỡ vận chuyển với pgAdmin cho lĩnh vực "Host" trong kết nối ("máy chủ"):

The host is the IP address of the machine to contact, or the fully qualified domain name. On Unix based systems, the address field may be left blank to use the default PostgreSQL Unix Domain Socket on the local machine, or be set to an alternate path containing a PostgreSQL socket. If a path is entered, it must begin with a “/”. The port number may also be specified.

Nếu bạn kết nối qua Unix ổ cắm các quy tắc cho "địa phương" được áp dụng. Trong khi đó khi kết nối qua TCP/IP "host" (hoặc "hostssl") áp dụng các quy tắc.

Nếu bạn có một dòng như thế này ở đầu tập tin pg_hba.conf của bạn:

local all  all  peer 

hay:

local all  all  ident 

.. sau đó bạn có thể kết nối cục bộ mà không cần mật khẩu nếu sử dụng hệ thống của bạn "postgres" và người dùng cơ sở dữ liệu của bạn cũng là "postgres".

+2

tôi changhed
# "địa phương" là dành cho Unix kết nối ổ cắm miền chỉ
địa phương tất cả mọi ngang # IPv4 kết nối địa phương: chủ tất cả mọi 127.0.0.1/32 trust
# Kết nối địa phương IPv6:
lưu trữ tất cả :: 1/128 trust
và hoạt động! Cảm ơn bạn!! – DarkCoffee

+0

@DarkCoffee: Tôi lấy nó, bạn biết rằng cài đặt 'tin cậy' không an toàn. –

4

Tôi nhận thấy đây là câu hỏi là năm cũ, nhưng tôi đã gặp phải vấn đề tương tự như hôm nay và có giải pháp sử dụng trust theo cách giới hạn nhưng hữu ích.

Như trong nhiều cửa hàng phát triển, khi người dùng cần mật khẩu bảo đảm chất lượng, họ chỉ cần hét lên, nhắn tin, gửi email, viết lên trán, v.v. Và tôi thích, "Điều này thực sự tệ. Tôi cần tìm ra cách để sử dụng PKI ở đây. " Chúng tôi cũng sử dụng pgAdmin3.

Đầu tiên, thêm một dòng như thế này để pg_hba.conf của bạn, nơi dev đại diện người sử dụng cho các nhà phát triển trong cửa hàng của bạn:

host all dev 127.0.0.1/32 trust

Drop khóa công khai của nhà phát triển trong thư mục authorized_keys của họ trên máy chủ cơ sở dữ liệu. Bây giờ có họ ssh vào máy chủ với -L cờ với một lệnh tương tự như sau:

ssh -i ~/.ssh/id_rsa -L5432:127.0.0.1:5432 -vvv 101.102.103.104

này cho phép một người sử dụng cổng postgres như thể nó đã được localhost. Tất nhiên, thay thế khóa, máy chủ và đảm bảo ánh xạ tới một cổng mở cục bộ (nếu bạn có một postgres cục bộ đang chạy, nó có thể bị ràng buộc tới 5432). Tôi sử dụng một cờ khá dài để tôi có thể dễ dàng gỡ rối bất kỳ vấn đề ssh nào.

mở một terminal và ban hành lệnh này:

psql -h 127.0.0.1 -U dev -p 5432

Bạn nên có quyền truy cập vào cơ sở dữ liệu và không bao giờ được nhắc nhập một mật khẩu, mà tôi nghĩ là rất tốt bởi vì nếu không, các nhà phát triển sẽ chỉ từ bỏ mật khẩu xung quanh với ít quan tâm đến an ninh, chuyển nó ra như kẹo Halloween.

Hiện tại, PgAdmin3 sẽ vẫn nhắc bạn nhập mật khẩu, mặc dù - đồng bằng như ngày - bạn không cần nó. Nhưng các GUI postgres khác sẽ không. Hãy thử Postico. Đó là bản beta nhưng hoạt động rất tốt.

Tôi hy vọng câu trả lời này sẽ giúp bất kỳ ai thích tôi, những người thích sử dụng PKI cho quyền truy cập thay vì chia sẻ mật khẩu.

Các vấn đề liên quan