/etc/services
chỉ mang tính chất tư vấn, đó là danh sách các cảng nổi tiếng. Nó không có nghĩa là bất kỳ thứ gì thực sự đang chạy trên cổng đó hoặc dịch vụ được đặt tên sẽ chạy trên cổng đó.
Trong trường hợp của PostgreSQL, thông thường sử dụng cổng 5432 nếu nó có sẵn. Nếu không, hầu hết người cài đặt sẽ chọn cổng miễn phí tiếp theo, thường là 5433.
Bạn có thể xem những gì đang thực sự chạy bằng netstat
công cụ (khả dụng trên OS X, Windows và Linux, với cú pháp dòng lệnh khác nhau trên cả ba).
Điều này còn phức tạp hơn trên hệ thống Mac OS X bởi sự hỗn độn khủng khiếp của các gói PostgreSQL khác nhau - phiên bản PostgreSQL cổ của Apple được tích hợp sẵn cho OS, Postgres.app, Homebrew, Macports, trình cài đặt EnterpriseDB, v.v.
Điều cuối cùng xảy ra là người dùng cài đặt Pg và khởi động máy chủ từ một bao bì, nhưng sử dụng psql
và libpq
khách hàng từ một bao bì khác. Thông thường, điều này xảy ra khi họ đang chạy Postgres.app hoặc homebrew Pg và kết nối với psql
được vận chuyển cùng với hệ điều hành. Đôi khi chúng không chỉ có các cổng mặc định khác nhau, mà Pg đi kèm với Mac OS X có một đường dẫn ổ cắm unix mặc định khác nhau , vì vậy, ngay cả khi máy chủ đang chạy trên cùng một cổng, nó sẽ không lắng nghe cùng một ổ cắm unix.
Hầu hết người dùng Mac giải quyết vấn đề này bằng cách chỉ sử dụng tcp / ip với psql -h localhost
. Bạn cũng có thể chỉ định một cổng nếu được yêu cầu, ví dụ:psql -h localhost -p 5433
. Bạn có thể có nhiều phiên bản PostgreSQL đang chạy, vì vậy hãy đảm bảo rằng bạn đang kết nối với phiên bản phù hợp bằng cách sử dụng select version()
và SHOW data_directory;
.
Bạn cũng có thể chỉ định một thư mục ổ cắm unix; kiểm tra unix_socket_directories
cài đặt của phiên bản PostgreSQL mà bạn muốn kết nối và chỉ định điều đó bằng psql -h
, ví dụ:psql -h /tmp
.
Giải pháp tốt hơn là sửa hệ thống của bạn PATH
để psql
và libpq
được liên kết với PostgreSQL mà bạn đang thực sự chạy là thứ được tìm thấy đầu tiên trên PATH
. Chi tiết của điều đó phụ thuộc vào phiên bản Mac OS X của bạn và gói Pg nào bạn đã cài đặt. Tôi không sử dụng Mac và không thể cung cấp nhiều chi tiết hơn về mặt đó mà không tốn nhiều thời gian hơn hiện có.