Psql không thể kết nối với máy chủ: Không có tệp hoặc thư mục như vậy, lỗi 5432?


114

Tôi đang cố chạy psqltrên máy Vagrant của mình nhưng gặp lỗi này:

psql: could not connect to server: No such file or directory

Is the server running locally and accepting connections on 
Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Lưu ý: Hộp Vagrant 1.9.2: ubuntu / trusty64, https://atlas.hashicorp.com/ubuntu/boxes/trusty64

CHỈNH SỬA các lệnh tôi đã sử dụng để cài đặt và chạy postgres:

  • sudo apt-get update
  • sudo apt-get install postgresql
  • sudo su postgres
  • psql -d postgres -U postgres

1
Đây là câu trả lời phù hợp với tôi: askubuntu.com/a/824325/733901
Bruno Louvem Azeredo

Câu trả lời:


156

Tôi đã gặp vấn đề tương tự này, liên quan đến cấu hình tệp pg_hba.conf của tôi (nằm trong /etc/postgresql/9.6/main). Xin lưu ý rằng 9.6 là phiên bản postgresql mà tôi đang sử dụng.

Bản thân lỗi này có liên quan đến việc định cấu hình sai postgresql, khiến máy chủ gặp sự cố trước khi khởi động.

Tôi đề nghị làm theo các hướng dẫn sau:

  1. Chứng nhận rằng dịch vụ postgresql đang chạy, sử dụng sudo service postgresql start
  2. Chạy pg_lsclusterstừ thiết bị đầu cuối của bạn
  3. Kiểm tra cụm bạn đang chạy là gì, đầu ra phải như sau:

    Phiên bản - Thư mục dữ liệu chủ sở hữu trạng thái cổng cụm

    9.6 ------- main - 5432 postgres trực tuyến /var/lib/postgresql/9.6/main

    Bỏ qua các dấu hiệu '---', vì chúng chỉ được sử dụng ở đó để căn chỉnh. Thông tin quan trọng là phiên bản và cụm. Bạn cũng có thể kiểm tra xem máy chủ có đang chạy hay không trong cột trạng thái.

  4. Sao chép thông tin từ phiên bản và cụm, và sử dụng như vậy pg_ctlcluster <version> <cluster> start:, vì vậy trong trường hợp của tôi, sử dụng phiên bản 9.6 và cụm 'chính', nó sẽ làpg_ctlcluster 9.6 main start
  5. Nếu có gì đó sai, thì postgresql sẽ tạo ra một bản ghi, có thể được truy cập vào /var/log/postgresql/postgresql-<version>-main.log, vì vậy trong trường hợp của tôi, lệnh đầy đủ sẽ là sudo nano /var/log/postgresql/postgresql-9.6-main.log.
  6. Đầu ra sẽ hiển thị lỗi là gì.

    2017-07-13 16:53:04 BRT [32176-1] LOG: phương thức xác thực không hợp lệ "tất cả"
    2017-07-13 16:53:04 BRT [32176-2] CONTEXT: dòng 90 của tệp cấu hình "/ etc /postgresql/9.5/main/pg_hba.conf "
    2017-07-13 16:53:04 BRT [32176-3] FATAL: không thể tải pg_hba.conf

  7. Sửa lỗi và khởi động lại dịch vụ postgresql thông qua sudo service postgresql restartvà nó sẽ ổn.

Tôi đã tìm kiếm rất nhiều để tìm thấy điều này, tín dụng đi đến bài đăng này .

May mắn nhất!


1
Hướng dẫn xuất sắc. Đầy đủ các giải thích toàn diện!
Salathiel Genèse

37

Tôi đã có cùng một vấn đề nhưng không có câu trả lời ở đây đã giúp.

Cách tôi sửa nó (mac)

  • Cố gắng bắt đầu postgresql với pg_ctl -D /usr/local/var/postgres start
  • Tìm Thông báo Lỗi có nội dung như FATAL: could not open directory "pg_tblspc": No such file or directory.
  • Tạo thư mục bị thiếu đó mkdir /usr/local/var/postgres/pg_tblspc
  • Lặp lại từ bước một cho đến khi bạn tạo tất cả các thư mục bị thiếu
  • Khi hoàn tất và sau đó cố gắng bắt đầu lại postgresql, nó có thể nóiFATAL: lock file "postmaster.pid" already exists
  • Xóa postmaster.pid :rm /usr/local/var/postgres/postmaster.pid
  • Bắt đầu postgres bằng: pg_ctl -D /usr/local/var/postgres start
  • Xong ✨

13

Tôi chỉ đăng điều này cho bất cứ ai đang cảm thấy mất mát và tuyệt vọng như tôi đã làm khi tôi tìm thấy câu hỏi này. Có vẻ như đôi khi bằng cách chỉnh sửa một số tệp cấu hình liên quan đến psotgresql, người ta có thể vô tình thay đổi quyền của tệp:

nhập mô tả hình ảnh ở đây

Lưu ý cách pg_hba.conf thuộc quyền root và người dùng thậm chí không thể đọc nó. Điều này khiến postgres không thể mở tệp này và do đó không thể khởi động máy chủ, gây ra lỗi được thấy trong câu hỏi ban đầu.

Bằng cách chạy

sudo chmod +r pg_hba.conf

Tôi có thể làm cho tệp này một lần nữa có thể truy cập được đối với người dùng postgres và sau khi chạy

sudo service postgresql start

Đã có thể làm cho máy chủ chạy lại.


Có, đây là vấn đề của tôi và điều này không được chỉ ra trong nhật ký (hoặc nếu có thì tôi không hiểu).
EAmez

Không chính xác điều gì đã xảy ra với tôi, nhưng vì một số lý do NETWORK SERVICE đã mất quyền ghi vào toàn bộ cấu trúc thư mục. Câu trả lời này đã chỉ cho tôi đi đúng hướng do đó đã ủng hộ.
Brad Mathews

5

/etc/postgresql/9.6/main/postgresql.confhiển thị rằng cổng đó đang được chỉ định không? Trên bản cài đặt Xubuntu Linux mặc định của tôi, tôi đã hiển thị port = 5433 vì một số lý do tốt nhất mà tôi có thể nhớ được, nhưng tôi đã nhận xét ra dòng trong cùng một tệp đã nói listen_addresses = 'localhost'và bỏ ghi chú dòng đó listen_addresses = '*'. Vì vậy, có thể bắt đầu và kiểm tra ở đó. Hy vọng rằng sẽ giúp.


4

Sử dụng lệnh:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

9
Điều này không loại bỏ toàn bộ cơ sở dữ liệu? Tôi nghĩ rằng một lời cảnh báo sẽ có thứ tự.
d33tah

1
Cảm ơn @Tucker Watts và @Gaurav Verma. Tôi đã giải quyết vấn đề của mình bằng cách thử cả hai giải pháp và thêm lệnh này pg_ctl -D /usr/local/var/postgres -l logfile start.
Niyongabo

4

Điều này phù hợp với tôi:

pg_ctl -D /usr/local/var/postgresql@9.6 stop;
brew services stop postgresql@9.6;
brew services start postgresql@9.6;

4

Hai bước sau đã giải quyết vấn đề đó cho tôi trên Mac:

rm /usr/local/var/postgres/postmaster.pid
brew services restart postgresql

BIÊN TẬP:

Trong trường hợp bạn gặp phải vấn đề này (do @ luckyguy73 báo cáo): psql: FATAL: database "postgresql" does not exist

Bạn có thể chạy

brew postgresql-upgrade-database

để sửa chữa nó.


cảm ơn người đàn ông, tôi đã đi từ một không thể kết nối với một tử vong bằng cách làm theo hướng dẫn của bạn: "psql: FATAL: cơ sở dữ liệu" postgresql "không tồn tại"
luckyguy73

Huh lạ, điều này luôn luôn hiệu quả với tôi. Bạn đã quản lý để giải quyết nó?
nicodp

không phải lo lắng, nó thực sự hóa ra ok. Tôi vừa chạy 'brew postgresql-
lift

1
Rất vui vì bạn đã sửa nó! Nếu bạn không phiền, tôi cũng sẽ thêm điều đó vào câu trả lời, trong trường hợp ai đó gặp phải vấn đề tương tự. Cảm ơn
nicodp

3

Trong zsh:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

Đây là thứ duy nhất có hiệu quả với tôi sau vô số giờ quay khó khăn.


2

Mở trình quản lý cơ sở dữ liệu của bạn và thực thi tập lệnh này

update pg_database set datallowconn = 'true' where datname = 'your_database_name';

2

Điều tương tự cũng xảy ra với tôi khi tôi đã thay đổi một số thứ trong /etc/hostshồ sơ. Sau khi thay đổi nó trở lại 127.0.0.1 localhostnó đã làm việc cho tôi.


2

chỉ cần cài đặt lại pgsql của bạn với phiên bản trực tiếp sudo apt-get install postgresql-9.5 (bạn phải xóa gói trước khi cài đặt mới)


2

Tôi đã có thể giải quyết vấn đề bằng cách chạy:

sudo systemctl start postgresql@9.5-main

sudo systemctl start postgresql@12-mainđã làm việc cho tôi
parsecer

2

Trong trường hợp của tôi postmaster.id, đó là tệp khóa không được xóa đúng cách trong sự cố hệ thống cuối cùng đã gây ra sự cố. Xóa nó bằng sudo rm /usr/local/var/postgres/postmaster.pidvà khởi động lại Postgres đã giải quyết được sự cố.


1

Tôi đã gặp lỗi tương tự khi tạo db SQL trong máy ảo. Tôi đã thay đổi giá trị mặc định của /etc/postgresql/9.3/main/postgresql.conf shared_buffers = 200MBthành 75% tổng RAM của mình. Tôi đã quên thực sự cấp phát RAM đó trong VM. Khi tôi đưa ra lệnh tạo cơ sở dữ liệu mới, tôi cũng nhận được lỗi tương tự.

Đã tắt nguồn, cung cấp cho em bé chai (RAM) và bắt đầu, nó hoạt động.


1

Tôi gặp lỗi này khi khôi phục cơ sở dữ liệu của mình từ tệp sao lưu pg_basebackup cuối cùng. Sau đó, khi tôi cố gắng kết nối cơ sở dữ liệu (psql), tôi gặp lỗi tương tự. Lỗi đã được giải quyết, khi tôi cập nhật tệp pg_hba.conf và bất kỳ nơi nào xác thực "ngang hàng" ở đó, tôi đã thay thế nó bằng "md5" và sau đó khởi động lại các dịch vụ postgres. Sau đó, vấn đề đã được giải quyết.


1

Tôi đã gặp vấn đề tương tự chỉ một lúc trước. Sau khi thử hơn 5 gợi ý, tôi quyết định quay lại những điều cơ bản và bắt đầu lại từ đầu. Điều đó có nghĩa là xóa cài đặt postgresql của tôi và làm theo hướng dẫn này khi cài đặt lại postgresql. https://help.ubuntu.com/tens/serverguide/postgresql.html


1

Lỗi này xảy ra với tôi sau khi máy Mac mini của tôi không được cắm (vì vậy buộc phải tắt máy) và tất cả những gì tôi phải làm để khắc phục nó là khởi động lại


1

Tôi khuyên bạn nên làm rõ cổng mà postgres. Trong trường hợp của tôi, tôi không biết postgres cổng nào đang chạy.

lsof -i | grep 'post'

thì bạn có thể biết cổng nào đang nghe.

psql -U postgres -p "port_in_use"

với tùy chọn cổng, có thể là câu trả lời. bạn có thể sử dụng psql.


1

Tôi thỉnh thoảng gặp vấn đề tương tự nhưng chủ yếu là sau khi nâng cấp macOS. Việc tắt và chuyển sang phiên bản mới thường khắc phục sự cố cho tôi (thực hiện các thay đổi theo phiên bản của bạn). Vì vậy, trước tiên hãy nâng cấp postgresql của bạn

brew services stop postgresql@12
brew services start postgresql@12
brew postgresql-upgrade-database

Đây chủ yếu là một bản sửa lỗi tạm thời nhưng vì tôi không thể tìm thấy giải pháp tốt hơn nên nó phù hợp với tôi.


brew postgresql-upgrade-database là thứ cuối cùng đã làm việc với tôi sau khi tôi thử mọi thứ khác
luckyguy73

1

Nếu không phải các câu trả lời ở trên không phù hợp với bạn, thì hãy thử câu trả lời này,

Nhiều người đã đề cập đến nhiều giải pháp cho vấn đề này! Nhưng tất cả họ đều quên rằng, vấn đề tương tự sẽ phát sinh khi đĩa của bạn không có đủ dung lượng hoặc dung lượng bạn được chỉ định đã postgresđầy

Kiểm tra bộ nhớ hệ thống của bạn, nếu bộ nhớ đầy đủ giải phóng một số dung lượng! sau đó khởi động lại postgres của bạn bằng cách sudo service postgresql restarthoặc dừng lại và bắt đầu sudo service posgresql stopsau đósudo service postgresql start

Điều này sẽ giải quyết vấn đề, nó đã giải quyết cho tôi


0

Tôi gặp vấn đề tương tự với postgres 11 trên máy mac của mình. Tôi gặp lỗi này mỗi lần sau khi khởi động lại

psql: could not connect to server: No such file or directory

Is the server running locally and accepting connections on 
Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Như một bản sửa lỗi tạm thời tôi làm

brew services stop postgresql@11
brew services start postgresql@11
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.