Computer >> 컴퓨터 >  >> 문제 해결 >> Linux

psql 연결 오류 해결:'서버에 연결할 수 없습니다. 해당 파일이나 디렉터리가 없습니다.'

PostgreSQL은 가장 발전된 오픈 소스 데이터베이스 애플리케이션 플랫폼으로 홍보되고 있으며 Debian Linux에는 확실히 이를 훨씬 더 복잡하게 만드는 많은 패키지가 있습니다. Ubuntu Server나 다양한 Ubuntu 스핀을 사용하여 작업하는 경우 Debian의 코어를 기반으로 하기 때문에 수많은 PostgreSQL용 패키지를 찾을 수도 있습니다. 이러한 수준의 복잡성과 개발로 인해 "서버에 연결할 수 없습니다" 및 "해당 파일이나 디렉터리가 없습니다"라는 경고가 훨씬 더 짜증나게 됩니다.

다행스럽게도 이는 일반적으로 PostgreSQL이 postgres라는 사용자가 이러한 디렉터리를 유지하기를 원한다는 사실로 인해 발생하는 간단한 권한 문제 사례입니다. 간단한 명령줄 트릭을 사용하면 거의 즉시 이 문제를 해결할 수 있습니다. 하지만 이것이 실제로 직면한 문제인지 확인하기 위해 사전에 몇 가지 기본 진단 점검을 수행하는 것이 좋습니다.

PostgreSQL을 서버에 연결할 수 없는 오류 수정

먼저 PostgreSQL 시스템을 수동으로 다시 시작해 보세요. 때때로 이것은 문제를 해결하기에 충분하며, 그렇지 않은 경우 최소한 작업할 수 있는 오류 메시지를 받게 됩니다. 아마도 postgres 사용자로 psql 명령을 실행하여 시스템을 다시 시작하면 됩니다.

이로 인해 모든 것이 해결되었음을 알 수 있습니다. 그렇지 않으면 "psql:서버에 연결할 수 없습니다. 해당 파일이나 디렉터리가 없습니다"라는 줄이 표시될 수 있습니다. 이는 권한 문제가 있음을 의미합니다. 이 오류 메시지를 받으면 다른 텍스트도 뱉어지게 됩니다.

이 메시지를 받은 경우 서비스 상태를 확인하여 모듈이 로드되었는지 확인하세요. 그래야 하지만 그렇지 않은 경우 다시 시작하는 것이 좋습니다. "로드됨:로드됨(/lib/systemd/system/postgresql.service; 활성화됨)"이라는 메시지가 표시되면 실행 중인 것입니다. sudo 서비스 postgresql 재시작을 사용해 보세요. 간단히 다시 시작하여 문제가 해결되었는지 확인하면 됩니다. 일반적으로 그렇지 않지만 상황에 따라 시도해 볼 가치가 있을 수도 있습니다.


도움이 되지 않았다고 가정하면 PostgreSQL 로그 내부를 살펴보고 오류를 찾아보세요. 드물지만 패키지 오류에 대한 내용을 발견하면 SQL 모듈 중 하나가 누락되었을 수 있습니다. 이것이 일반적으로 이러한 문제의 원인은 아니지만 적어도 한 번 살펴보는 것은 확실히 나쁠 수 없습니다. 아마도 실제로 "권한은 u=rwx (0700)이어야 합니다"라고 경고하는 내용을 접하게 될 것입니다.

"데이터 디렉터리 "/var/lib/postgresql/9.6/main"에는 그룹 또는 월드 액세스 권한이 있습니다." 그러나 실행 중인 SQL 서버에 따라 버전 번호가 다를 수 있습니다.

이는 Debian 및 유사한 배포판에서 postgres 사용자 및 그룹이 보안을 위해 0700 권한으로 이러한 디렉터리를 제어하고 0600 권한을 통해 모든 파일을 제어할 것으로 예상하기 때문입니다. 권한을 수정하려면 터미널에서 다음 명령을 실행하기만 하면 됩니다:

sudo chown -R postgres:postgres /var/lib/postgresql/9.6/ &&sudo chmod -R u=rwX,go=/var/lib/postgresql/9.6/

이러한 파일 권한 옵션을 설정하려는 특정 방식으로 인해 더 친숙한 일반적인 소문자 x가 아니라 대문자 X여야 한다는 점을 명심하세요. 이를 위해서는 루트 액세스가 필요하지만, 이 두 개의 sudo 표시를 포함하면 일반 사용자로 실행할 때 적절한 권한을 부여하기에 충분합니다. Ubuntu와 Ubuntu에서 파생된 다양한 Linux 구현이 기본 루트 계정을 해시하므로 이러한 방식으로 작업을 수행해야 하기 때문에 이는 중요합니다.

이 명령이 완료되면 sudo service postgresql restart를 통해 서비스를 다시 시작할 수 있습니다. 터미널에서 실행하면 이번에는 오류가 없어야 합니다. 로그를 살펴보면 권한 문제에 관한 경고도 더 이상 존재하지 않아야 합니다.

이는 상당히 특정한 조건의 결과로 발생하는 오류이므로 PostgreSQL 디렉터리의 권한 조작과 관련된 작업을 수동으로 수행하지 않는 한 처음 수정한 후에는 이 오류가 다시 발생하지 않아야 합니다. 애초에 이 문제를 해결하는 것 외에는 이것이 꼭 필요한 상황은 없습니다.

저자 소개

psql 연결 오류 해결: 서버에 연결할 수 없습니다. 해당 파일이나 디렉터리가 없습니다.

케빈 애로우

Kevin Arrows는 10년 이상의 업계 경험을 보유한 경험이 풍부하고 지식이 풍부한 기술 전문가입니다. 그는 MCTS(Microsoft Certified Technology Specialist) 인증을 보유하고 있으며 최신 기술 개발에 대한 최신 정보를 얻으려는 깊은 열정을 가지고 있습니다. Kevin은 소프트웨어 개발, 사이버 보안, 클라우드 컴퓨팅과 같은 분야에서 자신의 전문 지식과 지식을 보여주면서 광범위한 기술 관련 주제에 대해 광범위하게 글을 썼습니다. 기술 분야에 대한 그의 공헌은 동료들로부터 널리 인정받고 존경받고 있으며, 복잡한 기술 개념을 명확하고 간결하게 설명하는 능력으로 높은 평가를 받고 있습니다.