2013-07-23 17 views
5

Tôi đang thiết lập ứng dụng Rails khi cài đặt Ubuntu mới và tạo cơ sở dữ liệu Postgres bằng cách sử dụng rake db: create: all. Trong databases.yml, trường mật khẩu cho tất cả các cơ sở dữ liệu được để trống. Tôi đang cố gắng để làm một pg_restore của một bãi chứa tôi bị bắt từ triển khai sản xuất của ứng dụng, nhưng tôi tiếp tục được nhắc nhở cho một mật khẩu. Tôi có một cảm giác đây là một cái gì đó để làm với các thiết lập trong tập tin pg_hba.conf, nhưng tôi không thể nhớ làm thế nào tôi đã có chúng trong cài đặt Ubuntu trước đó của tôi. Làm thế nào để tôi nhận được Postgres để tin tưởng pg_restore cho các kết nối địa phương? Hoặc có điều gì khác gây ra sự cố này không?pg_restore yêu cầu mật khẩu cho cơ sở dữ liệu khi không có

Trả lời

9

Đặt trust (hoặc peer nếu bạn muốn khớp tên người dùng postgresql để hủy kết hợp tên người dùng) cho local kết nối trong pg_hba.conf. Bạn trả lời khá nhiều trong câu hỏi của bạn.

Nếu bạn đang xác định một cách rõ ràng -h localhost sau đó bạn đang sử dụng giao thức TCP/IP, vì vậy bạn sẽ cần phải hoặc là bỏ qua -h localhost, sử dụng -h /tmp hoặc bất cứ nơi nào bạn unix_socket_directory được cấu hình để sống, hoặc thiết lập trust cho host kết nối từ 127.0.0.1/32 trong pg_hba.conf.

Xem pg_hba.confclient authentication.

+0

Cảm ơn bạn, điều này giải quyết vấn đề của tôi –

+0

Đừng quên khởi động lại dịch vụ postgre sau này. – bdavidxyz

0

Một giải pháp thay thế sẽ được lưu trữ các thông tin đăng nhập trên máy client trong một file .pgpass trong thư mục người dùng gia đình:

localhost: *: cơ sở dữ liệu: username: password

Các điều khoản về vấn đề này tệp phải có ít nhất 0600 hoặc tệp sẽ bị bỏ qua.

http://www.postgresql.org/docs/9.2/interactive/libpq-pgpass.html