cổng postgresql nhầm lẫn 5433 hoặc 5432?


128

Tôi đã cài đặt postgresql trên OSX. Khi tôi chạy psql, tôi nhận được

$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5433"?

Tuy nhiên, từ / etc / services

postgresql      5432/udp    # PostgreSQL Database
postgresql      5432/tcp    # PostgreSQL Database
#                          Tom Lane <tgl@sss.pgh.pa.us>
pyrrho          5433/tcp    # Pyrrho DBMS
pyrrho          5433/udp    # Pyrrho DBMS

5433 bị chiếm bởi pyrrho, 5432 được gán cho pg. Tôi có thể kết nối với

psql -p 5432

nhưng tại sao psql nghĩ rằng nó là 5433 và làm cách nào để làm cho psql nhìn đúng chỗ theo mặc định?


5
Kiểm tra xem biến môi trường có PGPORTđược xác định không: postgresql.org/docs/civerse/static/libpq-envars.html
a_horse_with_no_name

Câu trả lời:


187

/etc/serviceschỉ là lời khuyên, đó là một danh sách các cổng nổi tiếng. Điều đó không có nghĩa là mọi thứ 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 PostgreQuery, việc sử dụng cổng 5432 là khả dụng. Nếu không, hầu hết các trình cài đặt sẽ chọn cổng miễn phí tiếp theo, thường là 5433.

Bạn có thể thấy những gì thực sự đang chạy bằng netstatcông cụ (có sẵn 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 các hệ thống Mac OS X bởi mớ hỗn độn khủng khiếp của các gói PostgreQuery khác nhau - phiên bản cổ của PostgreQuery của Apple được tích hợp trong HĐH, 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 psqllibpqứng dụng khách 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 psqlgiao hàng được vận hành cùng với HĐH. Không chỉ đôi khi chúng có các cổng mặc định khác nhau, mà PG được cung cấp với Mac OS X còn có đường dẫn ổ cắm unix mặc định khác , vì vậy ngay cả khi máy chủ đang chạy trên cùng một cổng, nó sẽ không nghe cùng một ổ cắm unix.

Hầu hết người dùng Mac đều khắc phục điều 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 bạn đang kết nối với bên phải bằng cách sử dụng select version()SHOW data_directory; .

Bạn cũng có thể chỉ định một thư mục ổ cắm unix; kiểm tra unix_socket_directoriescài đặt của phiên bản PostgreQuery mà bạn muốn kết nối và chỉ định điều đó với psql -h, vd psql -h /tmp.

Một giải pháp sạch hơn là sửa hệ thống của bạn PATHsao cho psqllibpqliên kết với PostgreQuery mà bạn thực sự đang chạy là thứ được tìm thấy đầu tiên trên PATH. Các chi tiết 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ề phía đó mà không mất nhiều thời gian hơn hiện có.


23

Trả lời nhanh trên OSX, đặt các biến môi trường của bạn.

>export PGHOST=localhost

>export PGPORT=5432

Hoặc bất cứ điều gì bạn cần.


16

Cổng mặc định của Postgres thường được cấu hình trong:

sudo vi /<path to your installation>/data/postgresql.conf

Trên Ubuntu, điều này có thể là:

sudo vi /<path to your installation>/main/postgresql.conf

Tìm kiếm porttrong tập tin này.


Trên Mac OSX với bản phân phối BigQuery, nó có ở đây:~/PostgreSQL/data/pg96
Shane

7

Nhờ @a_horse_with_no_name 's bình luận , tôi đã thay đổi định nghĩa của tôi để PGPORT 5432 trong pg_env.sh. Điều đó đã khắc phục vấn đề cho tôi. Tôi không biết tại sao postgres đặt nó là 5433 ban đầu khi nó được lưu trữ dịch vụ ở 5432.


7

Có vẻ như một trong những lý do phổ biến nhất xảy ra là nếu bạn cài đặt phiên bản mới của PostgreQuery mà không dừng dịch vụ cài đặt hiện có. Đây cũng là một vấn đề đau đầu đặc biệt của tôi. Trước khi cài đặt hoặc nâng cấp, đặc biệt là trên OS X và sử dụng trình cài đặt một lần nhấp từ Enterprise DB, hãy đảm bảo bạn kiểm tra trạng thái cài đặt cũ trước khi tiếp tục.


Có, chúng tôi đã cài đặt postgresql-9.5 khi 9.4 đã được cài đặt, vì vậy 9.5 đã chọn 5433 làm cổng mặc định
vikingsteve

Tôi đã sử dụng 5432 & 5433 trong một thời gian dài, tôi đã thấy 5436 nhưng không biết đó chỉ là một người sáng tạo hay một số mặc định trên các os-es khác nhau.
Deil

3

Tôi cũng gặp phải vấn đề này, kết cục là tôi có hai máy chủ postgres chạy cùng một lúc. Tôi đã gỡ cài đặt một trong số chúng và thay đổi cổng trở lại thành 5432 và hiện đang hoạt động tốt.


2

Đối với tôi trong PGAdmin 4 trên Mac OS High Sierra , Nhấp vào cơ sở dữ liệu PostrgreQuery10 trong Máy chủ ở cột bên trái, sau đó là tab Thuộc tính , hiển thị 5433 dưới dạng cổng trong Kết nối . (Tôi không biết tại sao, vì tôi đã chọn 5432 trong khi cài đặt). Dù sao, tôi đã nhấp vào biểu tượng Chỉnh sửa trong tab Thuộc tính , thay đổi thành 5432 , đã lưu và điều đó đã giải quyết vấn đề. Đi hình.


Tất cả những gì làm được là cho phép bạn kết nối với máy chủ đã chạy trên 5432, đó là lý do tại sao bạn có thể kết nối sau khi làm điều đó. Máy chủ đã chạy trên 5432 mỗi lần cài đặt của bạn như bạn đã nêu chính xác.
Shane
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.