Mountain Lion에 소켓 파일“/var/pgsql_socket/.s.PGSQL.5432”누락 (OS X 서버)


95

방금 OS X Server를 사용하여 MacMini Server를 Lion Server에서 Mountain Lion으로 업그레이드했습니다. 작년에 Lion Server를 처음 설치할 때와 동일한 문제가 PostgreSQL에서 발생합니다.

모든 종류의 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/pgsql_socket/.s.PGSQL.5432"?

오류가 발생했을 때 _postgres의 비밀번호를 변경하려고했습니다. 여러 명령을 시도했지만 동일한 오류가 발생했습니다. 방금 서버를 재부팅했지만 운이 없습니다. / var / pgsql_socket을보기 위해 루트로 로그인했는데 폴더가 비어 있습니다. / var / pgsql_socket_alt 폴더도 비어 있습니다.

나는 이것에 대해 온라인으로 확인했습니다. 그러나 Stack Overflow를 포함하여 내가 읽은 거의 모든 솔루션은 PostgreSQL의 제거 및 재설치를 제안합니다. 모르겠지만 서버 앱의 여러 옵션이 PostgreSQL을 사용하기 때문에 이것은 그럴듯한 옵션처럼 보이지 않습니다. 나는 Apple Enterprise Support (계약 없음)에 연락했고 $ 695를 던지는 개발자가 내 문제를 해결해야한다고 들었습니다.

나는 그것을 재 구축 할 수 없기 때문에 지금 다운 된 웹 사이트를 가지고있다. 이 시점에서 어디에서 도움을 요청해야할지 모르겠습니다. 나는 무언가를 찾을 수 있는지 계속 온라인에서 찾을 것입니다. 그러나 누군가가 신속하게 대답하여 데이터베이스를 다시 작성할 수 있기를 바랍니다.

업데이트 : 2012 년 12 월 13 일 15:33 GMT-6

다음은 ps auwwx | grep postg에 대한 출력입니다.

_postgres      28123   0.0  0.1  2479696   7724   ??  Ss    3:01PM   0:00.04 /Applications/Server.app/Contents/ServerRoot/usr/bin/postgres_real -D /Library/Server/PostgreSQL For Server Services/Data -c listen_addresses= -c log_connections=on -c log_directory=/Library/Logs/PostgreSQL -c log_filename=PostgreSQL_Server_Services.log -c log_line_prefix=%t  -c log_lock_waits=on -c log_statement=ddl -c logging_collector=on -c unix_socket_directory=/Library/Server/PostgreSQL For Server Services/Socket -c unix_socket_group=_postgres -c unix_socket_permissions=0770
server1        28216   0.0  0.0  2432768    620 s000  R+    3:02PM   0:00.00 grep postg
_postgres      28138   0.0  0.0  2439388    752   ??  Ss    3:01PM   0:00.01 postgres: stats collector process                           
_postgres      28137   0.0  0.0  2479828   1968   ??  Ss    3:01PM   0:00.00 postgres: autovacuum launcher process                           
_postgres      28136   0.0  0.0  2479696    544   ??  Ss    3:01PM   0:00.00 postgres: wal writer process                           
_postgres      28135   0.0  0.0  2479696    732   ??  Ss    3:01PM   0:00.01 postgres: writer process                           
_postgres      28134   0.0  0.0  2479696    592   ??  Ss    3:01PM   0:00.00 postgres: checkpointer process                           
_postgres      28131   0.0  0.0  2439388    368   ??  Ss    3:01PM   0:00.00 postgres: logger process 

업데이트 : 2012 년 12 월 13 일 18:10 GMT-6

강렬한 웹 검색 끝에이 비디오가 발견되었습니다. PostgreSQL을 작동시키고 오류를 제거 할 수있었습니다. pgadmin과 phppgadmin을 사용하여 연결할 수 있습니다. 좌절감 때문에 Lion Server로 돌아 가려고했습니다. 이제 그럴 필요가 없습니다.

http://www.youtube.com/watch?v=y1c7WFMMkZ4


22
귀하의 문제는 PostgreSQL의의의 맥 OS X 사전 설치 버전이 있다는 사실에 귀결 psql당신에 PATH설치 한 버전 전에. 그들은 다른 곳에서 유닉스 소켓을 찾습니다. tcp / ip를 지정하여 사용 -h localhost하거나 가급적 수정하여 PATH올바른 psql것을 먼저 찾으십시오. PostgreSQL을 번들로 묶을뿐만 아니라 그것을 엉망으로 만들어 비표준 위치에 물건을 넣는 Apple의 기괴한 결정이이 문제의 근본 원인입니다.
Craig Ringer 2012

3
OSX에는 패키저가 유닉스 도메인 소켓을 정상과 다른 위치에 배치하기로 결정한 지속적인 문제가 있습니다. 나 ... 검색 BRB ... 보자 stackoverflow.com/a/8482546/905902
wildplasser

.bashrc에 이전 PATH를 복사했습니다. 다른 버전의 postgreSQL을 설치하지 않았습니다. 다음은 RVM에 대한 코드를 포함하는 내 PATH 문입니다. 누군가가 그것을 바꿀 것을 말할 수 있다면 나는 그것을 할 것입니다. 어떤 psql을 수행하면 / usr / bin / psql에 있습니다. 도움을 주셔서 감사합니다. PATH = "$ PATH : $ HOME / .rvm / bin : / usr / bin / psql : / usr / local : / usr / local / sbin : / usr / local / bin : / usr / sbin : / usr / bin" 또한 루트로 로그인 한 상태에서 소켓 파일을 검색하고 있습니다.
파멜라 쿡 - LightBe 공사

1
homebrewosx@CraigRinger를 사용하는 사람들의 경우 올바른 대답이있을 수 있으므로 brew doctor.
Karthik T

답변:


299

오류를 방지하기 위해 .bash_profile에 다음을 추가 할 수있었습니다.

export PGHOST=localhost

이것은 다음과 같은 이유로 작동합니다 .

호스트 이름을 생략하면 psql은 Unix 도메인 소켓을 통해 로컬 호스트의 서버에 연결하거나 TCP / IP를 통해 Unix 도메인 소켓이없는 시스템의 localhost에 연결합니다.

OS가 Unix 도메인 소켓을 지원하지만 필요한 PostgreSQL의 Unix 소켓 psql이 없거나 예상과 다른 위치에 있습니다.

호스트 이름을 명시 적으로 지정하면 TCP / IP 를 localhost강제 psql로 사용합니다. 환경 변수를 설정하는 PGHOST것은이를 달성하는 방법 중 하나입니다. psql의 매뉴얼에 문서화되어 있습니다 .


37
Rails 앱을 사용하여 실행하는 모든 사용자 : database.yml에서 호스트를 지정할 수 있습니다.
dwhalen

12
이것은 어떤 종류의 마법입니까? 진지하게. 설명해 주시겠습니까?
Sreejith Ramakrishnan

1
나는 항상이 대답으로 돌아온다! 다시 내 생명을 구했습니다. 이 스 니펫은 실제로이 페이지, postgresapp.com/documentation/cli-tools.html 에 속합니다 .
sambecker

1
이유는 모르겠지만 저에게 효과적입니다! 'rails db : create'를 사용할 때 rails 5에서이 문제를 만났지만 이미 host: localhostdatabase.yml에서 설정했습니다 . @dwhalen
Spark.Bao

1
이는 database.ymlPostgres를 이전 Homebrew 관리 버전으로 다운 그레이드 한 후이 오류가 표시되었을 때 수정하지 않고 Rails 5.2에서 작동했습니다 .
SexxLuthor 19-01-06

37

다음과 같이 콘솔에 붙여 넣으십시오.

$ mkdir /var/pgsql_socket/ 

$ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

마침내 나는이 대답을 얻었다.
Abs

좋은. 왜 이것이 효과가 있는지 알고 있다고 생각하지만 조금 더 설명하면 도움이 될 것입니다. 이 솔루션은 허용되는 답변보다 낫고 세부 사항 만 누락되었습니다.
Glutexo

23

PostgreSQL 호스트 주소를 비워 두지 않고 간단히 127.0.0.1을 입력하여 해결할 수있었습니다. (장고 예시)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'database_name',
        'USER': 'database_user',
        'PASSWORD': 'pass',
        'HOST': '127.0.0.1',
        'PORT': '',
        }
}

1
지금은 좀 바보 같아요.이 문제를 약 2 일 동안 고치려고 노력했습니다. Windows에서는 '127.0.0.1'을 사용하고 있었지만 코드를 프로덕션 (Debian 7)으로 옮기고 ''로 변경해야했습니다. 문제가 다른 곳에있을 수 있다고 믿게 만드는 그러한 오류 메시지를 제공하는 것은 다소 이상합니다.
fang_dejavu 2014

10

선호하는 편집기에서 'postgresql.conf'를 엽니 다. 'unix_socket_directories'변수를 찾으면 다음과 같이 보일 것입니다.

unix_socket_directories = '/private/tmp/'

줄을 다음과 같이 변경하십시오.

unix_socket_directories = '/var/pgsql_socket/'

둘 이상의 디렉토리에있는 소켓 파일을 쉼표로 구분하려면 참고하십시오.


이것은 다른 곳에서 소켓을 만들려고하는 원하는 효과를 가졌지 만 / var 디렉토리에 파일을 만들 권한이 없기 때문에 서버가 시작되지 않았습니다. 원래 있던 소켓을 사용하기 위해 더 높은 수준에서 구성 파일을 변경했습니다. 이 답변 stackoverflow.com/a/29511357/1535177에 주어진 것과 거의 같습니다 .
Eosis


7

의견에서 다른 사람들이 언급했듯이이 문제에 대한 정말 간단한 해결책은 데이터베이스 구성 내에서 데이터베이스 '호스트'를 선언하는 것입니다. 이 답변을 읽는 사람에게 좀 더 명확하게하기 위해이 답변을 추가합니다.

예를 들어 Ruby on Rails 앱에서 /config/database.yml을 편집합니다.

development:
  adapter: postgresql
  encoding: unicode
  database: database_name
  pool: 5
  host: localhost

참고 : 호스트를 지정하기 위해 추가 된 마지막 줄입니다. Yosemite로 업데이트하기 전에는 이런 방식으로 호스트를 지정할 필요가 없었습니다.

이것이 누군가를 돕기를 바랍니다.

건배


.s.PGSQL.5432파일 이있는 디렉토리로 호스트를 설정해야했습니다 .
Eosis

5

데이터베이스 상태를 확인하십시오.

service postgresql status

데이터베이스가 실행되고 있지 않으면 db를 시작합니다.

sudo service postgresql start

위의 오류가 발생하여 db를 시작하여 해결했습니다.
Sivakumar RJ.

4

postgresql.conf 파일을 확인할 수 있습니까?

postgres가 실행중인 포트는 무엇입니까?

나는 그것이 포트 5432에서 실행되고 있지 않다고 생각합니다.

또는 터미널 사용

psql -U  postgres -p YOUR_PORT_NUMBER database_name

1
터미널 명령을 실행할 수 없습니다. 같은 오류가 발생합니다. postgresql.conf 파일을 찾을 수있는 위치에 대한 도움이 필요합니다. Lion Server를 실행할 때 / var / pgsql 폴더가있었습니다. 이제 사라진 것 같아요. ps grep 명령에 대한 출력을 방금 게시했습니다. PostgreSQL을 실행하기 위해 Wiki 서비스를 켰습니다. 서버 앱 서비스를 켜지 않고도 sudo serveradmin 명령을 사용할 수 있다고 들었지만 작동하지 않습니다. 지금은 루트로 로그인했기 때문에 무엇이든 할 수 있습니다. :) 네트워크 유틸리티에서 포트를 확인했습니다. 5432 사용되지 않습니다.
Pamela Cook-LightBe Corp

2

나는 장고 에이 문제가 있었다.

호스트 이름을 "localhost"로 명시 적으로 설정하여 문제를 해결하십시오.


2

나는 이것을함으로써 말로 만든다.

dpkg-reconfigure locales

선호하는 로케일을 선택하십시오.

pg_createcluster 9.5 main --start

(9.5는 내 버전의 postgresql입니다)

/etc/init.d/postgresql start

그리고 그것은 단어!

sudo su - postgres
psql


1
apt-get install postgres-xc-client
apt-get install postgres-xc

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

위의 오류가 계속 발생했으며 위의 솔루션 중 어느 것도 나를 위해 일하지 않았습니다. 마지막으로 다음 솔루션은 Mac OS X에서 내 문제를 해결했습니다.

brew를 사용하여 postgres 설치

brew install postgres

Brew 서비스 설치

brew tap homebrew/services

Postgres를 백그라운드 서비스로 시작하려면

brew services start postgresql

수동으로 postgres를 중지하려면

brew services stop postgresql

Brew 서비스를 사용하여 Postgres를 다시 시작할 수도 있습니다.

brew services restart postgresql

1

다음 코드로 postgres 서버가 실행 중인지 확인하십시오.

sudo service postgresql status

postgres 서버가 비활성 상태이면 다음 명령을 작성합니다.

sudo service postgresql start

1

내 컴퓨터가 자체적으로 정지되고 재부팅 된 후이 오류가 발생했습니다. 나를위한 해결책은이 페이지에서 찾을 수 없었고, psql : could not connect to server : No such file or directory (Mac OS X) 오류가있는 다른 매우 높은 등급의 SO 질문에서 찾을 수 없습니다 . 답 : 그냥이 파일을 삭제 /usr/local/var/postgres/postmaster.pid한 후 brew services restart postgresql트릭했다. 이 작업을 수행하기 전에 postgres 프로세스를 종료하는 것에 대한 연결된 답변에 대한 경고에 유의하십시오. 그렇지 않으면 db가 영구적으로 손상 될 수 있습니다.


1

RubyOnRails 앱의 localhost 경우 사용자 지정 Postgresql 버전을 사용하는 경우 추가

# config/database.yml
default: &default
  host: localhost

0

Mac OS가 소유 한 Postgres db에 대한 파일 권한은 제한적입니다. 이러한 권한은 재부팅하거나 Postgres를 다시 시작한 후에 재설정됩니다. 예 : serveradmin start postgres.

따라서 권한 또는 소유권을 일시적으로 재설정하십시오.

sudo chmod o+rwx /var/pgsql_socket/.s.PGSQL.5432
sudo chown "webUser"  /var/pgsql_socket/.s.PGSQL.5432

권한 재설정은 안전하지 않으므로 솔루션에 대해 소유 한 DB 버전을 설치하십시오.


0

시간이 좀 걸렸지 만 제안 된 제안과 추가 웹 검색이 수행 된 후에 마침내이 작업을 수행 할 수있었습니다. Mactasia에서 만든 다음 YouTube 동영상의 정보를 사용했습니다.

http://www.youtube.com/watch?v=y1c7WFMMkZ4

이 작업을 수행했을 때 확장자가 .lock 인 파일을 보았습니다. 그러나 PostgreSQL을 사용하여 Rails 애플리케이션 작업을 재개했을 때 Rails 서버를 시작하려고 할 때 여전히 오류가 발생했습니다. 이번에는 권한 거부 오류가 발생했습니다. 이것은 plist에서 listen_addresses를 변경해야 할뿐만 아니라 unit_socket_permissions도 0777로 변경해야한다는 것을 기억했을 때입니다. 또한 root로 로그인하여 var / pgsql_socket 폴더에 대한 권한을 변경했습니다. 사용자 수준. Postgres는 이제 잘 작동합니다. SQL 백업에서 데이터를 다시로드하는 중입니다.

내가 이해하지 못한 것은 PostgreSQL을 켰을 때 sudo serveradmin fullstatus postgres를 수행했을 때 작동한다고 가정했지만 여전히 오류가 발생한다는 것입니다. 오 잘.


0

방금 새 클러스터를 만들었고 저에게 효과적이었습니다. (PostgreSQL) 9.3.20을 사용했습니다.

sudo pg_createcluster 9.3 main --start

0

먼저 설치된 postgres를 제거합니다.

sudo apt-get purge postgr*
sudo apt-get autoremove

그런 다음 'synaptic'을 설치합니다.

sudo apt-get install synaptic
sudo apt-get update

그런 다음 Postgres를 설치하십시오.

sudo apt-get install postgresql postgresql-contrib
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.