% brew install postgresql
% brew services start postgresql
% psql postgres
% psql --username=postgres --dbname=postgres
맥 command에서 brew를 통해 postgres를 다운 받고 실행시킨 뒤, psql 명령어를 통해 DB에 진입할 수 있는 명령어다. (맨 아래 명령어는 왜 했는지 모르겠으나 다른 오류때문에 기입한 것으로 추정...)
문제는... 여기까지는 가능하지만 db를 만들 때 아래의 오류가 발생했다.
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: role "postgres" does not exist
위의 오류가 뜬 뒤 다시 psql로 진입하려고 했으나...
% psql
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: database "chodakk" does not exist
??? 분명 되던 psql이 갑자기 오류를 뱉어낸다. 퉤.
따라서 구글링해보니 다~들 다음과 같은 방법으로 서비스를 재시작하라고 했다.
% brew services restart postgresql@14
Stopping `postgresql@14`... (might take a while)
==> Successfully stopped `postgresql@14` (label: homebrew.mxcl.postgresql@14)
==> Successfully started `postgresql@14` (label: homebrew.mxcl.postgresql@14)
음 문제없이 실행되고 산뜻하다.
하지만...
% psql
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: database "chodakk" does not exist
ㅋㅋㅋ 도돌이표였다
나와 같은 오류를 뱉어내는 사람들이 많았다.
자료는 많은데 m1 맥북(내 꺼임)이냐 아니냐에 따라 코드가 다르고... 총체적 난국이다.
% cd /Applications/PostgreSQL 14/Application Stack Builder.app
cd: too many arguments
무지성으로 복붙했는데 생각해보니 경로 사이에 띄어쓰기 무엇.
그래서 일단 해당 파일이 있는 지부터 봤다.
...없다? 이게 뭐여
pgAdmin에서는 db를 만들 때 자꾸 postgres role이 없다고 하길래 이부터 해결하고자 해당 명령어를 기입하였다.
% createuser -s postgres
% psql
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: database "chodakk" does not exist
command에서도 db chodakk이 없다면서 오류를 내고, pgAdmin에서는 postgres role 오류 어쩌구는 들어갔지만 저 오류를 다시 뱉어냈다. 퉤.
다른 방법을 구글링하니 postmaster.pid 파일을 삭제하라 했ㄷ ㅏ...
1. 실행했던 postgres를 멈추게 한다.
% brew services stop postgresql
Stopping `postgresql@14`... (might take a while)
==> Successfully stopped `postgresql@14` (label: homebrew.mxcl.postgresql@14)
2. postmaster.pid 파일 삭제
% rm /usr/local/var/postgres/postmaster.pid
rm: /usr/local/var/postgres/postmaster.pid: No such file or directory
저 파일 그냥 없어 ㅋㅋ
파인더를 통해서도 해당 폴더가 있는 지부터 봤는데 없어요. 아니 없어요. 그냥 없어요.
근본으로 돌아가... (해당 글에서 설명을 안했지만) django의 5432 포트가 안된다는 오류를 고치러 초심으로 돌아가 구글링 했더니, postgresql.conf 파일에서 포트를 좀 만져주면 된다고 했다...
% sudo vi /usr/local/var/postgres/postgresql.conf
결과 : 빈파일 ㅋㅋ (해당 파일이 없다는 뜻이다.)
스택 오버플로우에선 m1 (그 이상도 해당할 듯) 노트북 유저는 이렇게 해야한다고 했다.
% rm /opt/homebrew/var/postgres/postmaster.pid
rm: /opt/homebrew/var/postgres/postmaster.pid: No such file or directory
결과 : 지울 파일(폴더)이 없어요
킹받아서 폴더가 있는 지부터 차례로 점검했다.
% cd /opt
/opt % cd homebrew
homebrew % ls
CHANGELOG.md Frameworks completions manpages var
CONTRIBUTING.md LICENSE.txt docs opt
Caskroom Library etc package
Cellar README.md include sbin
Dockerfile bin lib share
homebrew % cd var
var % ls
homebrew log postgresql@14 postgresql@15
따라서 brew uninstall을 통해 14버전과 15버전 모두 삭제하고 /opt/homebrew/var에서 두 폴더까지 삭제 후 재설치하기로 했다.
1. postgresql을 멈추게 한다.
% brew services stop postgresql
Stopping `postgresql@14`... (might take a while)
==> Successfully stopped `postgresql@14` (label: homebrew.mxcl.postgresql@14)
2. postgres를 삭제한다. [알고보니 나는 14버전만 있었다. 15는 파일만 남아있나 봄]
% brew uninstall --force postgresql@14
Uninstalling postgresql@14... (3,317 files, 46MB)
% brew uninstall --force postgresql@15
% brew cleanup
3. /opt/homebrew/var/ 로 이동 후 파일 삭제
% cd /opt/homebrew/var
% rm -rf postgresql@14
% rm -rf postgresql@15
4. postgresql@14 재설치 후 db 생성
[필수] : 뒤에 @14를 붙여야 한다. (15버전은 @15겠죠?!)
% brew install postgresql@14
% brew services start postgresql@14
5. db 생성 및 psql 진입
% createdb chodakk
% psql
psql (14.10 (Homebrew))
Type "help" for help.
chodakk=#
6. 혹시 몰라 postmaster.pid 파일도 삭제
% cd /opt/homebrew/var/postgresql@14
% ls
PG_VERSION pg_multixact pg_tblspc
base pg_notify pg_twophase
global pg_replslot pg_wal
pg_commit_ts pg_serial pg_xact
pg_dynshmem pg_snapshots postgresql.auto.conf
pg_hba.conf pg_stat postgresql.conf
pg_ident.conf pg_stat_tmp postmaster.opts
pg_logical pg_subtrans postmaster.pid
% rm postmaster.pid
% ls
PG_VERSION pg_multixact pg_tblspc
base pg_notify pg_twophase
global pg_replslot pg_wal
pg_commit_ts pg_serial pg_xact
pg_dynshmem pg_snapshots postgresql.auto.conf
pg_hba.conf pg_stat postgresql.conf
pg_ident.conf pg_stat_tmp postmaster.opts
pg_logical pg_subtrans
7. 하지만 role postgres 오류 발생
% psql --username=postgres --dbname=postgres
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: role "postgres" does not exist
8. role postgres does not exist 오류 해결
% createuser -s postgres
% psql --username=postgres --dbname=postgres
psql (14.10 (Homebrew))
Type "help" for help.
postgres=#
감격의 순간
윈도우에서 맥으로 옮긴지 얼마 안된 시점에서 디렉토리나 커맨드가 좀 생소하다 보니 우왕좌왕하긴 했다. (한글 폴더명 말고 영어 폴더명으로 보여주세요 파인더님...)
이걸 두 시간 이상 붙잡고 있으면 꼴도 보기 싫기 때문에 에러를 자세하게 보지도 않고 해서 대충 봤는데, 지금 복기해보니까 조금 더 자세히 봤으면 한 시간 정도는 절약하지 않았을까 싶은 것들이 꽤나 있었다.
% psql 오류 : database "[user명]" does not exist
- brew를 통해 postgresql을 삭제 후 재설치 (꼭 뒤에 @버전 붙어야함!)
- % brew services start postgresql@14 를 통해 서비스 실행
- (m1 기준) /opt/homebrew/var/로 이동해 해당 postgres 파일 내 postmaster.pid 파일 삭제
- createdb [user명]
- psql로 진입할 때 db를 지정 안 해주면, 커맨드 사용자 이름으로 들어가는 것 같음.
% psql --username=postgres --dbname=postgres 오류 : role "postgres" does not exist
- % createuser -s postgres 명령어 실행 (postgres 유저를 생성)
- 1번을 하고도 명령어를 다시 입력했을 때 오류가 뜬다면 postgresql 삭제 후 재설치
- username에 postgres가 없어서 생기는 오류.
- 참고 : 이 때 % psql 을 한다면 자신의 컴퓨터 이름이 postgres가 아닌 이상 user명 db가 없다면서 에러를 뱉어냄
아무튼 나처럼 우왕좌왕하는 누군가에게 조금이라도 도움되는 게시글이면 좋겠다.
스택 오버플로우 보기 싫어싫어^^