티스토리 뷰

요즘 Udacity에서 fullstack web developer 강의를 듣는데 주로 강의에서는 postgresql을 사용했다.

virtual box에 udacity course내에서 제공해주는 vagrant 설정을 이용하면 이미 강의 내용에 맞춰서 package들이 설치가 되어 있기 때문에 따라하는데 무리가 없지만, 연습 삼아서 내 컴퓨터에 설치된 ubuntu에서 직접 postgresql을 사용해 보려고 하니까 이거 저거 설정할 것이 많았기에 적어둔다.


터미널에서 postgresql을 설치

$ sudo apt-get update

$ sudo apt-get install postgresql postgresql-contrib


설치가 완료 된 후에 postgresql을 사용하기 위해서는 현재 터미널의 user이름을 postgres로 바꿔줘야 한다.

postgresql이 db에 접근하기 위한 권한을 확인하기 위해서 roles라는 개념을 이용하는데 이때 role에 등록된 사용자인지 아닌지를 username으로 확인하기 때문이다.

$ sudo -i -u postgres 또는 $ sudo su postgres

$ psql

을 차례대로 입력해주면 PostgreSQL prompt가 실행된다. 

postgres=# \q 를 입력해주면 다시 터미널로 돌아올 수 있고 원래 터미널 유저로 돌아가고 싶으면

$ su my_username을 입력해주면 된다. (my_username자리에는 만들고 싶은 이름을 넣어주자)


새로운 유저를 DB에 추가하기 위해서는 postgres 유저로 로그인한 상태에서

$ createuser --interactive 혹은

슈퍼유저로 로그인된 상태에서

$ sudo -u postgres createuser --interactive 

명령어를 통해서 유저를 생성해 줄 수도 있다.

위의 두 가지 명령어는 DATABASE 내에서 사용될 role을 추가해 준 것이다.

따라서 ubuntu에 내가 생성한 role과 일치하는 유저를 추가해주어야 해당 role로 로그인을 해줄 수 있다.

$ sudo adduser my_username 

adduser 명령어를 통해서 우분투에 내가 등록해준 role과 동일한 이름의 유저를 추가해주고

만약 슈퍼 유저 권한을 주고 싶으면

$ sudo usermod -a -G sudo my_username 

을 해주면 된다.

이제 데이터베이스를 생성해주자. 기본적으로 role의 name과 일치하는 데이터베이스에 접속하도록 되어있으므로 username과 일치시켜주는게 편하지만 다르게 해주어도 옵션을 통해 다른 db에 접속할 수 있다.

$ sudo su postgres

$ psql

postgres=# CREATE DATABASE databese_name;

postgres=# GRANT ALL PRIVILEGES ON DATABASE "database_name" TO my_username

내가 만든 유저에 모든 권한을 주었기 때문에 이제 my_username으로 로그인 한 상태에서 위 데이터 베이스에 접근할 수 있다. my_username을 생성할 때 --interactive모드에서 superuser로 role을 생성했다면 my_username으로 유저를 바꾸고 나서

$ createdb database_name

으로 데이터베이스를 생성해 줄 수도 있다.

이제 내가 만든 db에 접속하기 위해서는

db를 관리하는 유저명으로 터미널 유저를 바꿔주고

$ psql -d database_name 을 입력해주면 된다.

psql 프롬프트 내에서 보통 우리가 알고있는 쿼리문 자유롭게 사용할 수 있다. 자세한건 PostgreSQL Docs를 참고하자

원래 가지고 있던 sql 파일을 데이터베이스에 연결해주고 싶은 경우도 있을 수 있는데

다시 db관리자 user로 터미널 유저를 바꿔준후에

$ psql database_name < 'sql file path'

해주면 된다 path입력이 귀찮으면 그냥 pwd를 sql 있는 곳으로 이동해준다.

$ psql database_name < my_data.sql

해주면 끝

이제 psql을 사용할 준비는 다 되었고

python에서 psycopg2 모듈을 사용할 때도 python 파일을 실행하는 유저와 database에 등록된 role의 이름을 맞춰주어야 한다는 것이다. 그것만 주의해주면 문제없이 psycopg2 모듈을 이용해서 psqldb에 연결을 해줄 수 있다.


참고 사이트


https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-16-04









댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함