2012-09-17 35 views
25

Bắt:Đang cố gắng để thiết lập cho ứng dụng postgres ROR, nhận lỗi - fe_sendauth: không có mật khẩu được cung cấp

An error has occurred: 

Error connecting to the server: fe_sendauth: no password supplied 

Settings trong database.yml cũng giống như việc cài đặt ứng dụng trên các máy khác.

Tôi làm cách nào để thiết lập mọi thứ để không cần mật mã?

Tôi có thể xem db ok bằng PgAdmin-III.

Tôi không muốn có mật khẩu trong database.yml vì các máy khác sử dụng ứng dụng này không có/cần nó, vì vậy có vẻ như có thể là điều gì đó về cài đặt Pg của tôi.

+0

Tôi muốn xem bạn cần xem 'pg_hba.conf' và xem liệu bạn đã thêm bất kỳ quy tắc 'ident' hoặc' trust' nào cho các DB khác hay chưa; so sánh với cái này –

Trả lời

60

Bạn cần thay đổi thay đổi của mình pg_hba.conf. Dưới đây là một ví dụ của tôi:

pg_hba.conf:

TYPE DATABASE  USER   ADDRESS     METHOD 

host all    all    127.0.0.1/32   trust 

host all    PC    127.0.0.1/32   trust 

host all    all    ::1/128     trust 

Lưu ý rằng trust có nghĩa là bất cứ ai trên address (trong trường hợp này localhost) có thể kết nối như là người dùng niêm yết (hoặc trong trường hợp này bất kỳ người sử dụng lựa chọn của họ) . Điều này thực sự chỉ thích hợp cho các cấu hình phát triển với dữ liệu không quan trọng. Không sử dụng điều này trong sản xuất.

+3

Cảm ơn. Thật không may tôi đã làm điều này và khởi động lại postgres nhưng nó đã không giúp đỡ. Lỗi tương tự. –

+7

@MichaelDurrant Chắc chắn bạn đang kết nối với đúng máy chủ và chỉnh sửa đúng 'pg_hba.conf'? Hãy thử 'SHOW hba_file;' trong psql để tìm 'pg_hba.conf'. Đồng thời kiểm tra nhật ký máy chủ PostgreSQL. –

+0

Tôi đã phải thay đổi "PC" thành "tất cả" để có được điều này để làm việc, nhưng nếu không cảm ơn bạn cho câu trả lời này! –

0

Không có mật khẩu nào được cung cấp nghĩa là bạn đã thiết lập mật khẩu để yêu cầu xác thực mật khẩu và không có mật khẩu nào được cung cấp. Đây là tài liệu cho 9.0: http://www.postgresql.org/docs/9.0/static/auth-methods.html

Hãy nhớ rằng auth địa phương đã được thay đổi từ "ident" thành "peer" trong 9.1 để tránh nhầm lẫn. Xem tài liệu 9.1 tại http://www.postgresql.org/docs/9.1/static/auth-methods.html

Cũng xin lưu ý rằng đây là quy tắc đặt hàng được đặt với điều chỉnh đối sánh đầu tiên. Hơn nữa localhost và localhost là khác nhau. Địa phương là cho các kết nối socket miền địa phương UNIX, trong khi host localhost sẽ dành cho các kết nối mạng tới localhost. Vì vậy, có vẻ như bạn có một số khắc phục sự cố để làm nhưng hy vọng các tài liệu sẽ trợ giúp.

9

@ rodrigo-zurek đã được phát hiện; bạn phải thay đổi pg_hba.conf. Chỉ muốn thêm câu trả lời này cho người dùng OSX bởi vì pg_hba.conf được đặt ở một vị trí khác theo mặc định.

sudo su - postgres 
vim /Library/PostgreSQL/<YOUR_VERSION>/data/pg_hba.conf 

Giá trị mặc định sẽ có md5 trong cột METHOD, nhưng thay thế tất cả những người có trust:

# TYPE DATABASE  USER   ADDRESS     METHOD 

# "local" is for Unix domain socket connections only 
local all    all          trust 
# IPv4 local connections: 
host all    all    127.0.0.1/32   trust 
# IPv6 local connections: 
host all    all    ::1/128     trust 

Sau đó, mở ra pgAdmin III bên trong ứng dụng của bạn/PostgreSQL 9.X, kích chuột phải vào cơ sở dữ liệu (ví dụ: PostgreSQL 9.4 (localhost)) và nhấp vào Reload Configuration. Sau đó, tôi có thể rake db:create.

+0

Bạn có thể vui lòng cho biết cách chỉnh sửa 'pg_hba.conf' và lưu không? Tôi mới sử dụng Mac – Shana

0
#appveyor.yml 
services: postgresql 
test_script: 
    - SET PGUSER=postgres 
    - SET PGPASSWORD=Password12! 
    - PATH=C:\Program Files\PostgreSQL\9.6\bin\;%PATH%