programing

PostgreSQL: psql이 서버에 연결할 수 없는 이유는 무엇입니까?

elecom 2023. 6. 2. 20:07
반응형

PostgreSQL: psql이 서버에 연결할 수 없는 이유는 무엇입니까?

입력했습니다psql그리고 나는 이것을 이해합니다.

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"?

저는 용한사를 요.sudo netstat -nlp | grep 5432상태를 확인했지만 아무것도 표시되지 않았습니다.제가 , 하라고 했어요.pg_hba.conf하지만 그럴 수 없습니다.locate이 서류철그리고 이 명령도 시도했습니다.sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432안 돼요.

이 오류는 psql 유틸리티가 데이터베이스 서버에 연결할 소켓을 찾을 수 없음을 나타냅니다. 중인 이 다른 곳에 . 또는 "" "" "" "" "" "" "" "" "" " "" " "" " " " " " " " " " " " 입니다.pg_hba.conf수정해야 합니다.

1단계: 데이터베이스가 실행 중인지 확인

명령은 운영 체제에 따라 다를 수 있습니다.그러나 대부분의 *ix 시스템에서는 다음과 같이 작동하며, 실행 중인 모든 프로세스 중에서 사후 처리를 검색합니다.

ps -ef | grep postgres

내 시스템에서, macosx, 이것은 뱉습니다.

501   408     1   0  2Jul15 ??         0:21.63 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log

마지막 열에는 서버를 시작하는 데 사용되는 명령과 옵션이 표시됩니다.

다음을 사용하여 postgres 서버를 시작하는 데 사용할 수 있는 모든 옵션을 확인할 수 있습니다.

man postgres

거기서부터, 당신은 옵션들이-D그리고.-r는 각각 입니다.datadir그자리의 logfilename.

2단계: Postgres 서비스가 실행 중인 경우

사용하다find하려면 소의위 검위해기색하그, ./tmp

sudo find /tmp/ -name .s.PGSQL.5432

postgres가 실행 중이고 소켓 연결을 수락하는 경우 위의 내용을 통해 소켓의 위치를 알 수 있습니다.내 컴퓨터에서, 그것은 다음과 같은 것으로 밝혀졌습니다.

/tmp/.s.PGSQL.5432

그런 다음 이 파일의 위치를 사용하여 psql을 통해 연결해 보십시오.

psql -h /tmp/ dbname

3단계: 서비스가 실행 중이지만 소켓이 보이지 않는 경우

소켓을 찾을 수 없지만 서비스가 실행 중인 경우 pg_hba.conf 파일이 로컬 소켓을 허용하는지 확인합니다.

다음으로 이동합니다.datadir그리고 당신은 그것을 찾아야 합니다.pg_hba.confjava.

기본적으로 파일 아래쪽에 다음 줄이 표시됩니다.

# "local" is for Unix domain socket connections only
local       all       all       trust

파일이 보이지 않으면 파일을 수정하고 postgres 서비스를 다시 시작할 수 있습니다.

Postgres 서비스를 시작하는 데 오류가 없으면 다음 단계를 수행합니다.

1단계: 실행pg_lsclusters 중인 됩니다.

예:

Ver Cluster Port Status Owner    Data directory               Log file
9.6 main    5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log

아마 당신의 경우에는 상태가 낮아질 것입니다.다시 시작하지 않으면 PostgreSQL 서비스

2단계: pg_ctl 클러스터를 다시 시작합니다.

#format is pg_ctlcluster <version> <cluster> <action>
sudo pg_ctlcluster 9.6 main start

#restart PostgreSQL service
sudo service postgresql restart

3단계: 2단계가 실패하고 오류가 발생했습니다.

시작하지 경우.pg _lscluster가 .의 실수는 를 확인할 수 있습니다./var/log/postgresql/postgresql-9.6-main.log)

FATAL: could not access private key file "/etc/ssl/private/ssl-cert-snakeoil.key": Permission denied
Try adding `postgres` user to the group `ssl-cert`

4단계: 우편물 소유권 확인

반시를 확인하세요.postgres는 의입다니자의 입니다./var/lib/postgresql/version_no/main 예:sudo chown postgres -R /var/lib/postgresql/9.6/main/

5단계: postgres 사용자가 ssl-cert 사용자 그룹에 속하는지 확인

저에게 일어난 일인데 알고 보니 "ssl-cert" 그룹에서 Postgres 사용자를 잘못 제거했습니다.아래 코드를 실행하여 사용자 그룹 문제를 해결하고 권한을 수정합니다.

#set user to group back with
sudo gpasswd -a postgres ssl-cert

# Fixed ownership and mode
sudo chown root:ssl-cert  /etc/ssl/private/ssl-cert-snakeoil.key
sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key

# now postgresql starts! (and install command doesn't fail anymore)
sudo service postgresql restart

Postgre와 작업할 때 이 문제를 경험했습니다.Ubuntu 18.04의 SQL.

는 제 확인니다를 했습니다.PostgreSQL상태를 확인하고 다음을 사용하여 정상적으로 실행되고 있음을 알게 되었습니다.

sudo systemctl status postgresql

는 또한 또한다시보다니았습해작시를 다시 .PotgreSQL다음을 사용하는 시스템의 서버:

sudo systemctl restart postgresql

그러나 문제는 계속되었습니다.

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"?

누샤드의 대답에 따라 저는 다음과 같이 했습니다.

장치에서 실행 중인 모든 Postgres 클러스터를 나열합니다.

pg_lsclusters

이것은 이 출력물을 빨간색으로 표시하여 모든 출력물이 다운되었음을 보여주고 상태도 다운되었음을 나타냅니다.

Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 down   postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
11  main    5433 down   postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
12  main    5434 down   postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log

서버 클러스터 중 하나에 대해 pg_ctl 클러스터를 다시 시작합니다.저는 PG 10을 다시 시작했습니다.

sudo pg_ctlcluster 10 main start

그러나 아래 오류가 발생했으며 다른 PG 클러스터를 다시 시작하려고 시도했을 때 동일한 오류가 발생했습니다.

Job for postgresql@10-main.service failed because the service did not take the steps required by its unit configuration.
See "systemctl status postgresql@10-main.service" and "journalctl -xe" for details.

로그에 오류가 있는지 확인합니다. 이 경우 내 로그는 PG 10입니다.

sudo nano /var/log/postgresql/postgresql-10-main.log

다음 오류가 발생했습니다.

2020-09-29 02:27:06.445 WAT [25041] FATAL:  data directory "/var/lib/postgresql/10/main" has group or world access
2020-09-29 02:27:06.445 WAT [25041] DETAIL:  Permissions should be u=rwx (0700).
pg_ctl: could not start server
Examine the log output.

이는 Postgre에 대한 파일 권한을 변경했기 때문에 발생했습니다.SQL 데이터 디렉터리입니다.

아래 명령을 실행하여 수정했습니다.컴퓨터에서 3PG 클러스터에 대한 명령을 실행했습니다.

sudo chmod -R 0700 /var/lib/postgresql/10/main
sudo chmod -R 0700 /var/lib/postgresql/11/main
sudo chmod -R 0700 /var/lib/postgresql/12/main

그런 다음 각 PG 클러스터를 다시 시작했습니다.

sudo pg_ctlcluster 10 main start
sudo pg_ctlcluster 11 main start
sudo pg_ctlcluster 12 main start

그리고 마지막으로 클러스터의 상태를 다시 확인했습니다.

pg_lsclusters

상태가 온라인으로 표시됨에 따라 이번에는 모든 것이 다시 정상으로 돌아왔습니다.

Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
11  main    5433 online postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
12  main    5434 online postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log

이상입니다.

이것이 도움이 되길 바랍니다.

나의 경우, 오류가 발생한 후에 다음과 같이 게시물을 시작할 수 있었습니다.

sudo service postgresql start
sudo su - postgres
psql

저는 비슷한 문제에 몇 번 부딪힌 적이 있습니다.보통 저는 Postgre를 새로 설치합니다. 튜토리얼을 따르는 SQL은 데이터 손실을 감수하면서 문제를 해결합니다.

저는 오늘 진짜 치료를 받기로 결심했습니다.Postgre Postgre를 다시 하면 되었습니다.SQL이 Ubuntu에서 이 문제를 해결했습니다. sudo /etc/init.d/postgresql restart

WSL 2를 사용하는 경우 다음을 사용합니다.

sudo service postgresql start

저도 같은 문제에 직면했고,

sudo su - postgres
initdb --locale en_US.UTF-8 -D /var/lib/postgres/data
exit
sudo systemctl start postgresql
sudo systemctl status postgresql

이것은 저에게 효과가 있었습니다.

이 있었는지 모르겠지만 요.무슨 일이 있었는지는 모르겠지만, 저는 그냥 모든 것을 삭제하고 다시 설치했습니다.할 때 한 명령어입니다.sudo apt-get --purge remove postgresql\*그리고.dpkg -l | grep postgres후자는 깨끗하지 않을 경우 모든 패킷을 찾는 것입니다.

debian에서 psql 클라이언트에서 서버의 postgres 데이터베이스에 원격으로 액세스하는 빠른 방법: (변경된 구성은 파일에 문서화되어 있습니다.

  1. 편집을/etc/postgresql/10/main/postgresql.conflisten_address 포함 *와
  2. 편집을/etc/postgresql/10/main/pg_hba.conf그리고 마지막에 라인을 추가합니다.host all all 0/0 md5
  3. 역할 생성하기postgres=# CREATE ROLE remoteuser LOGIN WITH PASSWORD 'foo'
  4. sudo /etc/init.d/postgresql restart 사항이 됩니다.

  5. 에서 클이언로그로 psql --host=ipofserver --port=5432 --username=remoteuser --password --dbname=mydb

  6. 이 경우 암호는 대화형으로 어떤 것이 foo인지 묻습니다.

디스크가 완전히 차서 데이터베이스를 시작할 수 없는 파일 시스템을 확인하여 이 문제를 해결했습니다.

도메인 의 연결은 다음과 같습니다."/var/run/postgresql/.s.PGSQL.5432" ?

일련의 문제 해결을 시도했지만, 디스크 사용량을 확인한 결과 사용률이 100%로 가득 찼습니다.

df -h
cd /var/log/odoo/
cat /dev/null > odoo-server.log
reboot

이 오류는 Postgres 서버가 실행되고 있지 않음을 의미합니다.시작해 보십시오.

sudo systemctl start postgresql

서버가 부팅 시 시작되는지 확인합니다.

sudo systemctl enable postgresql

Linux 및 Ruby on Rails에 Windows 서브시스템을 사용하는 경우 이 명령을 사용하여 postgres가 어느 포트에서 실행되고 있는지 확인합니다.sudo nano /etc/postgresql/12/main/postgresql.confdatabase. "5433" 데이터베이스를 실행합니다.yml 파일로 이동하여 포트 5433을 추가한 다음 명령을 실행합니다.sudo service postgresql start는 제 했습니다.

저는 데부안 아스키(아마 데비안도?)에 대해서도 같은 문제를 가지고 있었습니다. 파일이 " "입니다./etc/postgresql/9.6/main/postgresql.conf 지문포가 됩니다.unix_socket_directories그것이 가리키는 것은/var/run/postgresql결석으로로 변경/tmp대부분의 고객들이 기본적으로 찾는 곳에서, 저를 위해 그것을 고쳤습니다.

에서 PostgrePostgre후 이 .Ubuntu 21에 이미 13을 설치한 상태에서 SQL 11 및 12. 이 를 저는방금이해다니습했결로 했습니다.sudo nano /etc/postgresql/13/main/postgresql.conf그리고 그것을 발견했습니다.port = 5433(이유는 알 수 없음).그래서 변했어요.port = 5432그러면 문제가 해결됩니다.

Ubuntu 20.04.4 LTS에서.다음을 사용하고 있었기 때문에 소켓 연결이 걱정되었습니다.

psql -U postgres db_omm < db.pgsql

오류: 오류: 소켓 "/var/run/postgresql/.s의 서버에 연결.PGSQL.5432" 실패: FATAL:사용자 "postgres"에 대한 피어 인증 실패

그러나 인증은 사용자 권한을 사용합니다.따라서 사용자를 지정하고 루트 또는 다른 사용자에 있더라도 postgres로 전환해야 합니다.

su - postgres

효과가 있었어요!

이 오류 메시지에 대한 제 문제는 제가 조작한 키 및 pem 인증서에 대한 잘못된 권한입니다.제게 많은 도움이 된 것은 /var/log/postgresql/postgresql-9.5-main.log입니다. 여기에 모든 오류가 있습니다.

저도 같은 문제가 있었습니다.클러스터가 없을 때는 소켓이 없는 것 같습니다.

기본 로케일이 설정되지 않았기 때문에 설치하는 동안 기본 클러스터를 만들지 못했습니다.

에는 이런./var/run/postgresql/.s.PGSQL.5433(참고로, 찾고 있던 파일에서 한 숫자 위에,.s.PGSQL.5432가 참석했습니다.가 참석했습니다.이 페이지의 상단에 있는 지침을 시도했지만 아무 것도 작동하지 않았습니다.

PostGreSQL 12에 PostGreSQL ./etc/postgresql/12제가 삭제한 문제가 문제를 해결했습니다.

추가를 . 의 인스턴스가 소켓에 불만을 한다면, "조만더추싶습다니고하가금다싶니습▁just조만▁check고▁is▁also더추▁you하,▁can:가▁your. 인스턴스가 소켓에 대해 불만을 제기하는 경우에도 확인할 수 있습니다.unix_socket_directories/data/postgresql.conf로 되었을 수 /tmp예를 들어 타사 배포를 사용한 경우.로 변 수 있 다니습할경으로 할 수 ./var/run/postgresql서비스를 다시 시작합니다.이를 위해서는 다음을 생성해야 할 수도 있습니다.postgresql에 화를 내는./var/run그리고.subsys/postgresql-9.6/var/lock 9).(postgresql 9.6을 사용하는 )

postgresql을 새로 설치하는 동안.기본적으로 사용자 이름과 암호는 "postgres"로 할당됩니다.이 RDBMS가 제공하는 기능은 새 사용자의 역할을 추가하고 데이터베이스를 만드는 것입니다.이러한 오류가 발생하는 경우:

  1. 기본 사용자 이름으로 로그인:

    root@kalilinux : ~# sudo -i -u 포스트그레스

  2. 대화형 프롬프트에 대한 yppsql

    postgres@kalilinux:~$ psql

  3. 프롬프트 사용을 중지하려면

    \q

  4. 새 사용자 역할을 생성하려면 다음과 같이 하십시오.

    postgres@kalilinux:~$ 사용자 생성 -- 압축적

이제 당신은 인터액티브 psql 쉘에 있습니다.즐겨보세요. 사용자 이름에서 로그인하는 것을 잊지 말고 셸에 대해 psql을 입력하세요.

예를 들어 구성 파일의 오타로 인해 문제가 발생했습니다.어떤 사람들은 인증서 파일 때문에 발생했다고 말하고, 다른 그룹은 일치하지 않는 현지인들 때문에 발생했다고 말합니다.

문제에 대한 해결 방법을 찾을 수 없으면 게시물을 제거한 후 다시 설치합니다.이것이 최선의 해결책입니다.

저도 비슷한 문제가 있었는데 구성 파일 pg_hba.conf에 문제가 있었습니다.서버를 시작하는 동안 오류가 발생하는 몇 가지 변경 사항을 이전에 수행했습니다.추가 사항을 주석 처리하여 문제를 해결했습니다.

인스턴스를 다시 시작하는 것이 효과가 있었습니다.또한 일부 다른 post psql -h '/tmp'에서도 언급했듯이 다시 시작하기 전에도 작동했습니다.그러나 재시작 후 psql은 바로 작동하기 시작했습니다.그래서 아마 다시 시작할 때 재설정된 파일 소유권 문제가 있을 것입니다.

다음을 사용하여 Postgres가 실행 중인지 확인합니다.

ps -ef | grep postgres
root@959dca34cc6d:/var/lib/edb# ps -ef|grep postgres
enterpr+    476  1  0 06:38 ?        00:00:00 /usr/lib/edb-as/11/bin/edb-postgres -D /var/lib/edb-as/11/main2 -c config_file=/etc/edb-as/11/main2/postgresql.conf

및 "데이터 확인postgresql.conf.

에는 경데디리렉터터에 있는 .-D에서와는 달랐습니다.postgresql.conf

그래서 나는 데이터 디렉토리를 변경했습니다.postgresql.conf그리고 그것은 성공하였다.

datadir에 대한 올바른 권한을 설정하여 이 문제를 해결할 수 있었습니다.그럴 것 같네요.

chmod 700 /var/lib/postgresql/10/main
chown postgres.postgres /var/lib/postgresql/10/main

저의 경우 서비스가 실행 중이었지만 클러스터가 다운되어 psql이 시작되지 않았습니다.구성 파일이 완벽해 보였지만 구성 오류가 계속 발생하고 변경 내용을 무시하는 것 같았습니다.

당신이 사용할 때마다ALTER SYSTEM SET ..., Postgre은 SQL이라는 에 씁니다.postgresql.auto.conf해당 파일은 일반 파일과 함께 읽힙니다.postgresql.conf그리고.pg_hba.conf파일. Ubuntu(18.04)의 배포판에서는 다른 폴더(!)에 있습니다.
-pg_hba.conf그리고.postgresql.conf 다 에둘 있다음에 있습니다./etc/postgresql/12/main
자동 생성된 파일은 다음과 같습니다./var/lib/postgresql/12/main/postgresql.auto.conf

는 다을사여구변했습다니고려를 사용하여 하려고 했습니다.ALTER SYSTEM SET listen_addresses = <my-ip>하지만 실수를 했고 그것은 내가 찾을 수 없는 망가진 "유령" 구성을 만들었습니다.내가 범죄자들을 지운 순간postgresql.auto.conf그것이 모든 것을 고쳤습니다.

서비스가 안전하지 않은 경우, 이것이 원인일 수 있습니다.

vi /etc/postgresql/11/main/pg_hba.conf
  1. hba 구성 파일을 엽니다. 이 구성 파일은 일반적으로 etc 디렉토리에 있습니다.
host    all   all    localhost trust   md5
  1. 신뢰 키워드를 제거할 수 있습니다.

  2. pg_session.conf 저장

  3. sudo service postgresql 재시작.

저의 경우 이 오류가 발생하여 게시물이 실행되지 않았습니다.

문제는 설치에서 필요한 클러스터를 생성하지 못했다는 것입니다.

해결책은 폴더를 생성하는 것이었습니다./etc/postgres/{postgresql-version}/main

그런 다음 다음을 사용하여 클러스터를 생성합니다.

pg_createcluster {postgresql-version} main

그 후에는 postgresql 서비스를 다시 시작하기만 하면 모든 것이 작동합니다.

저의 경우, 저는 postgres 10을 제거했지만 성공하지 못했고, 일부 pg10 파일/프로세스가 여전히 남아 있습니다.

그리고 나서 저는 postgres 13을 설치했습니다. 그래서 13페이지는 포트 5432에서 다른 페이지가 실행되고 있다고 생각합니다. 그래서 5433을 사용하고 있습니다.

해결책: 다음을 통해 모든 페이지를 삭제합니다.sudo apt-get --purge remove postgresql postgresql-* (됩니다). (파일: 파일 파일 형식: 파일 형식: 파일 형식: 파일 형식).

서버를 재부팅할 때 나는 두 곳에서 이것들을 발견했습니다.

srwxrwxrwx1 postgres postgres 0 Nov 10 18:44.s.PGSQL.5432 -rw---------1 포스트그레스 48 Nov 10 18:44.s.PGSQL.5432.lock

두 파일 모두 아래 위치에 있으며 재부팅 전에는 존재하지 않았습니다. /var/run/postgresql/ /tmp/

해당 권한이 있는 파일을 사용할 수 있는지 확인하고 psql을 시작합니다.

언급URL : https://stackoverflow.com/questions/31645550/postgresql-why-psql-cant-connect-to-server

반응형