2013-05-28 25 views
14

tôi đã tạo ra một tập tin .pgpass trong thư mục chính của tôi trông như thế nàypostgresql: .pgpass không làm việc

localhost:5432:somedb:someuser:somepass

Tôi đang sử dụng một kịch bản shell mà tạo ra một thư mục và đặt một pg_dump của somedb có:

mkdir directory 
pg_dump somedb > directory/somefile.dump 

Nó vẫn nhắc mật khẩu.

Lỗi ở đây ở đâu?

+4

Bạn có cố gắng chỉ định máy chủ lưu trữ và người dùng không? 'pg_dump -U someuser -h localhost somedb> directory/somefile.dump' – devnull

+0

Có một sai lầm thực sự ngu ngốc. Chỉ định người dùng và nó hoạt động: D Cảm ơn –

+0

@devnull Vui lòng đăng câu trả lời để được chấp nhận. –

Trả lời

18

Bạn đã thử chỉ định máy chủ lưu trữ & người dùng?

pg_dump -U someuser -h localhost somedb > directory/somefile.dump 
+14

Không phải tệp .pgpass phải loại bỏ sự cần thiết phải chỉ định máy chủ và người dùng? –

+6

@IanHunter Không, mục đích cung cấp tên người dùng và máy chủ lưu trữ trong tệp pgpass là tạo tiêu chí phù hợp. "Khi tên người dùng và máy chủ này được cung cấp, hãy sử dụng mật khẩu này". Nó chỉ có thể thực hiện trận đấu này nếu bạn đặt tên người dùng và máy chủ để khớp với, – JHixson

+0

@JHixson - Tôi thích lời giải thích của bạn, nhưng đây là lần đầu tiên tôi thấy tệp .pgpass được mô tả theo cách này - bạn có thể cung cấp tham chiếu không cho lời giải thích đó? –

15

Mặc dù câu hỏi đã được trả lời và chấp nhận, cũng có thể xảy ra các quyền trên tệp .pgpass không được đặt đúng. Nó phải có quyền truy cập vào nhóm và thế giới không được phép:

/bin/chmod 0600 ~/.pgpass 
+0

Có đủ kỳ quặc – Donato

1

Kiểm tra chủ sở hữu của tệp .pgpass. Chỉ mất nửa giờ để tìm ra tôi đã tạo tập tin .pgpass với sudo. Lệnh cho người dùng và địa điểm của tôi là chown postgres:postgres /var/lib/pgsql/.pgpass.