PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Lỗi khi chạy lệnh psql trong /docker-entrypoint-initdb.d/db_init.sh (psql:không thể kết nối với máy chủ:Kết nối bị từ chối)

Có vẻ như cam kết này đã làm hỏng tập lệnh của bạn.

Giải thích:

PostgreSQL có thể chấp nhận các kết nối không chỉ qua TCP / IP mà còn qua ổ cắm UNIX. -h localhost đối số nói với psql để sử dụng kết nối TCP thay vì ổ cắm UNIX.

Nếu bạn xem xét docker-entrypoint.sh hiện tại phiên bản, bạn sẽ thấy, điều đó trong quá trình thực thi các tập lệnh trong /docker-entrypoint-initdb.d PostgreSQL chỉ lắng nghe trên ổ cắm UNIX và nhật ký khởi động cho biết:

LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"

Điều này có nghĩa là psql -h localhost sẽ không kết nối với cơ sở dữ liệu, vì PostgreSQL không lắng nghe trên ổ cắm IP. Bạn phải sử dụng psql không có -h localhost tùy chọn để làm cho nó sử dụng ổ cắm UNIX thay vì kết nối TCP.

Nhưng tại sao lại chạy psql -h localhost hoạt động thủ công?

Nếu bạn nhìn vào docker-entrypoint.sh một lần nữa, bạn sẽ thấy rằng khi tất cả các tập lệnh init được thực thi, PostgreSQL đang được đã dừng và sau đó bắt đầu lại ở chế độ bình thường (hoạt động), trong đó nó nghe cả trên ổ cắm UNIX và IP:

LOG:  listening on IPv4 address "0.0.0.0", port 5432
LOG:  listening on IPv6 address "::", port 5432
LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"

Vì vậy, khi quá trình khởi động hoàn tất, bạn có thể kết nối với PostgreSQL bằng kết nối TCP, do đó, nhập vào vùng chứa và chạy psql -h localhost thành công.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉ mục GIN của PostgreSQL chậm hơn GIST cho pg_trgm?

  2. Cách sử dụng psycopg2 để truy xuất giá trị của một khóa nhất định từ bảng postgres có các cặp khóa-giá trị

  3. thiết lập PostgreSQL với Laravel trong MAMP

  4. Thực thi truy vấn thô khi di chuyển - Sắp xếp thứ tự 3.30

  5. SET CONSTRAINTS ALL DEFERRED không hoạt động như mong đợi