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
Đặ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.conf
và client authentication.
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
Cảm ơn bạn, điều này giải quyết vấn đề của tôi –
Đừng quên khởi động lại dịch vụ postgre sau này. – bdavidxyz