티스토리 뷰

Programming/settings

Postgresql로 Local DB 만들기

prograsshopper_ 2020. 10. 21. 10:31

사실 당연하게도 서버에 있는 데이터베이스를 가지고 테스트를 하진 않을거고, DEV서버가 따로 있겠지만 완전히 혼자서 갖고 놀 수 있게 로컬에 DB를 만들고 싶을때가 있다. 그럴 때를 대비해 작성해놓는 포스트.

일단 postgresql을 설치하자.
-  sudo apt-get install postgresql postgresql-contrib

psql 서버를 시작한다
- sudo service postgresql start

postgres의 경우에는 자동적으로 생성되는 유저이므로 이 계정으로 변경해보자.
- sudo -u postgres -i

그 다음 postgresql로 접속!
- psql

여기서 현재 상태를 확인해볼 수 있다. 대표적인 명령어는 아래의 것들이 있다.
\du : 유저목록확인
\l : 데이터베이스 목록 확인
\dt : 테이블 확인

 

더 많은 명령어를 알고 싶다면: www.postgresqltutorial.com/postgresql-show-tables/

 

PostgreSQL Show Tables

 

www.postgresqltutorial.com

나는 일단 ROLE을 하나 더 생성했다. 생성할 때는 다음과 같이 psql상에서 쳐주면 된다.

 

- CREATE ROLE [role_name] [args: permissions] {PASSWORD} '[password]';

 

args:permissions는 권한 관련 항목들이고. 만약 비밀번호도 넣고 싶다면 PASSWORD와 세팅하고 싶은 비밀번호도 쳐주면 된다.

좀 더 자세한 사항을 알고 싶다면:  www.postgresql.org/docs/current/role-attributes.html

 

PostgreSQL: Documentation: 13: 21.2. Role Attributes

A database role can have a number of attributes that define its privileges and interact with the client authentication system. login privilege Only roles that have the LOGIN attribute can be used as the initial role name for a database connection. A role w

www.postgresql.org

이 다음 생성해주고 싶은 데이터베이스를 만들어주자. 난 그냥 기본적인 명칭인 postgre 라는 데이터베이스를 만들었다.
- CREATE DATABASE postgres;

\l을 통해 확인해본후, exit을 두번 쳐서 원래의 기본적인 계정으로 돌아와보자.

만들려는 데이터베이스 sql 파일은 pgadmin에 들어가서 상단 메뉴증 tools - backup에서 뽑을 수 있다. 파일명/파일 포멧을 정하고 옵션을 바꿔주고 싶으면 dump options에 들어가서 일부 수정해주면 된다. 이렇게 입력 후에 backup 버튼을 누르면 sql파일을 지정한 루트에서 확인할 수 있다. 

* 나의 경우엔 pgadmin을 윈도우즈에서 실행후 wsl상의 우분투로 해당 파일을 가져와야했으므로 wsl 상에서 explorer.exe 라는 커맨드를 실행후 파일 탐색기를 통해 해당 sql 파일을 옮겨줬다.

 

이 다음 pg_restore 명령어를 실행한다.
- pg_restore -h [hostname] -U [username] -C -d [databasename] -F c [sql-file-location/mydb.sql]

 

맞는 호스트네임, postgresql 유저명, 데이터베이스이름, 해당 sql파일 경로와 파일명을 적어주면 된다.
-F 뒤에 오는건 파일포맷을 어떻게 정하냐에 따라 달라지는데 나는 커스텀으로 포맷을 정해줬기 때문에 c를 적었고 만약 tar 파일이라면 t 등을 적어주면 된다.

처음엔 tar로 했다가 나중에 커스텀으로 한 후 오류가 발생해서 해당 오류는 여기서 도움을 받아 해결할 수 있었다.

그러면 처음에 빈껍데기만 만들어둔 postgres가 sql파일 기반으로 바뀐다.


사실 얘의 경우엔 각 스탭마다 문제가 생겼고 앞으로도 문제가 생길것같은데^^ 일단은 정리해봤다.
추후에 또 생기는 문제들은 또 발생한 에러와 함께 정리해야겠다....

반응형
댓글