Kết nối pgAdmin3 với Postgres trên Heroku


9

Tôi đang chạy cơ sở dữ liệu Heroku Postgres ( Cơ sở dữ liệu ) kết hợp với ứng dụng Django. Các tài liệu đề cập đến phần bổ sung có ở đây . Tôi nghĩ rằng đây sẽ là một câu hỏi đáng giá cho cộng đồng vì Heroku đã cảnh báo người dùng của mình ngày hôm nay rằng họ sẽ di chuyển mọi thứ khỏi tiện ích cơ sở dữ liệu dùng chung được sử dụng để mặc định.

Tôi gặp một số sự cố khi kết nối pgAdmin3 với Cơ sở dữ liệu.

Theo hướng dẫn trong liên kết ở trên, tôi lấy thông tin đăng nhập của Cơ sở dữ liệu bằng lệnh sau:

$ heroku pg:credentials HEROKU_POSTGRESQL_OLIVE

Tôi đang sử dụng bản cài đặt homgrew của Postgresql trên Mac OSX.

Trong khi đó, tôi có:

  • bật SSL trong pg_postgresql.conf của tôi;
  • đã thêm cài đặt: listen_addresses = '*'
  • và thêm host all all 0.0.0.0/0 md5
  • và khởi động lại máy chủ postgres của tôi.

Sau đó, tôi vào pgAdmin3 và chọn File > Add Server.

Tôi nhập thông tin đăng nhập do Heroku cung cấp như sau (đầu tiên là tên thông tin Heroku, thứ hai là tên trường pgAdmin):

Trong tab "Thuộc tính":

  • dbname thành Tên;
  • lưu trữ vào máy chủ;
  • cảng vào cảng;
  • Tôi để trống trường pgAdmin cho "Cơ sở dữ liệu bảo trì";
  • người dùng vào Tên người dùng;
  • mật khẩu vào Mật khẩu;

Trong tab SSL:

  • Trong trường cho SSL, tôi chọn "yêu cầu" (theo hướng dẫn của Heroku).

Tôi nhấn enter và pgAdmin nghĩ, sau đó đưa ra một lỗi như sau:

An error has occurred:

Error connecting to the server: FATAL: permission denied for database "postgres"
DETAIL: User does not have CONNECT privilege.

Không chắc chắn những gì để làm vào thời điểm này. Sẽ đánh giá cao bất kỳ con trỏ.


pgadmin.org/docs/1.8/connect.html nói: The maintenance DB field is used to specify the initial database that pgAdmin connects to, and that will be expected to have the pgAgent schema and adminpack objects installed (both optional). On PostgreSQL 8.1 and above, the maintenance DB is normally called ‘postgres’- và đó là điều mà pgAdmin đã cố gắng kết nối. Cung cấp mật khẩu của postgresngười dùng.
dezso

Câu trả lời:


6

Cảm ơn @araqnid trên Stack Overflow cho câu trả lời ở đây .

Trích dẫn nguyên văn từ đó:

Mở "Thuộc tính" của máy chủ Heroku trong pgAdminIII và thay đổi giá trị "Bảo trì DB" thành tên của cơ sở dữ liệu bạn muốn kết nối. Thiết lập mặc định phù hợp với các DBA và cộng sự có thể kết nối với bất kỳ cơ sở dữ liệu nào trên máy chủ, nhưng dường như điều đó không đúng trong trường hợp của bạn.

Điều này làm việc cho tôi!


nhưng điều này đã chống lại cơ sở dữ liệu 1368. ngay cả khi tôi đã thêm Bảo trì DB làm tên db của mình
Sunil Garg

3

FATAL: permission denied for database "postgres"chỉ ra rằng nó đang cố gắng kết nối với cơ sở dữ liệu postgres. Chúng tôi thực sự không cấp đặc quyền như vậy. Bạn có thể kết nối với cơ sở dữ liệu của riêng bạn, điều đó sẽ ổn thôi. Bạn có thể chứng minh điều đó bằng cách kết nối thông qua CLI psql.

Có vẻ như bạn đang đặt heroku dbnamethành một thứ gọi là Namepgadmin. Đó dường như là "tên kết nối" cho những gì bạn đang tạo ở đó (một cái gì đó tùy ý để đề cập đến nó sau này), nhưng không có nơi nào bạn có thể đặt tên cơ sở dữ liệu thực tế, để nó không mặc định postgres?

Tôi không phải là người dùng pgadmin, nhưng chỉ tìm kiếm xung quanh các tài liệu được tìm thấy [1] chỉ định như sau:

The maintenance DB field is used to specify the initial database that pgAdmin connects to.

Bạn có thể thử nó không?

[1] http://www.pgadmin.org/docs/dev/connect.html


1

Chạy lệnh sau để lấy thông tin cơ sở dữ liệu từ Heroku:

heroku pg:credentials DATABASE_URL

Sau đó, bạn có thể sử dụng một công cụ GUI như PG Commander hoặc PGAdmin để kết nối với db.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.