본문 바로가기

Database/PostgreSQL

PostgreSQL install ~ begin with Django: Linux(Ubuntu)

728x90
반응형

WSL 환경에서 실행 (Ubuntu 22.04)

 

Install

  $ sudo apt update
  $ sudo apt install postgresql postgresql-client
  $ systemctl status postgresql

 
 
 
 
DB 생성
$ sudo -u postgres createdb mydatabase
  -u 옵션으로 user 선택, postgesql의 default user인 postgres로 실행
 
  오류 발생: could not change directory to "/home/user": permission denied
 
 
 
 
 
해결책:
$ sudo chmod 755 /home/user
 
  위 명령어로 postgres user에게 /home/user directory 에 대해서 읽고 쓸 권한을 줍니다.        
  저의 경우 /home밑에 user dir가 없어서 /home/user 생성한 후에 위 명령어 실행했습니다.
   

 
 psql 실행

  1) postgres user로 변경   
$ su - postgres
   
   * sudo su 또는 su - 로 root로 간 후에 su - postgres 해야 명령어가 먹히는 경우도 있습니다.
 
 
  2) psql 실행
$ psql
      $ \l  명령어로 table 확인 가능

 

 
Django 연동
 
settings.py에서 설정 변경
DATABASES = {
      'default': {
          'ENGINE': 'django.db.backends.postgresql',
          'NAME': MYDATABASE,
          'USER': USER,		# postgres
          'PASSWORD' : PASSWORD,
          'HOST' : '127.0.0.1',
          'PORT' :'5432',
      }
}
 
migrate 하려면 psycopg 설치 필요
 
 
설치 할 때 오류 나면 잘보면 psycopg2-binary를 설치하라는 말이 있을겁니다.
그럼 psycopg2 대신에 psycopg2-binary 설치해서 사용해야 합니다.
$ pip install psycopg2
# 또는
$ pip install psycopg2-binary
 
 

 

PostgreSQL을 접근할 수 있도록 설정

 

1.  postgresql.conf 설정 변경

cd /etc/postgresql/VERSION/main/
nano postgresql.conf

    listen_addresses = '*'   으로 변경, 또는 특정 IP만,
    local에서만 사용할 경우 -> listen_address = 'localhost'

 


---- 요약 ----

Install
$ sudo apt update
$ sudo apt install postgresql postgresql-client
$ systemctl status postgresql​


user, db 생성
$ sudo -u postgres createdb mydatabase
    Error: could not change directory to "/home/taltal": 허가 거부
    Solution: $ sudo chmod 755 /home/user
      /home/user 없으면 생성한후 실행


psql 실행
$ su - postgres  (potgres user로 변경)
$ psql
 

---------------
* postgres로 들어와서 database 생성하기
CREATE DATABASE [db_name];

 
* psql 시작과 동시에 원하는 (로컬)db에 들어가기
$ psql -h 127.0.0.1 -U postgres -d mydatabase


* postgres로 user 변경한 후에 로컬 db에 바로 들어가기
$ psql -U postgres -d mydatabase


* $ psql 명령어를 실행해서 들어간 후에 (postgres=# 뜨는 경우), 바로 db로 들어가기
$ \c mydatabase
 

* DB password 설정 
$ ALTER USER postgres WITH PASSWORD 'new_password';​


* Django DB 설정
DATABASES = {
      'default': {
          'ENGINE': 'django.db.backends.postgresql',
          'NAME': MYDATABASE,
          'USER': USER,		# postgres
          'PASSWORD' : PASSWORD,
          'HOST' : '127.0.0.1',
          'PORT' :'5432',
      }
}

 

-------

+ psql에서 USER 생성, 권한 주기

 

1) user 생성

CREATE USER new_username WITH PASSWORD 'password';

 

2) DB 생성할 수 있는 권한 가진 유저 생성

CREATE USER new_username WITH PASSWORD 'password' CREATEDB;

 

3) 권한 주기 (모든 권한 주는 예시)

GRANT ALL PRIVILEGES ON DATABASE your_database TO new_username;

 

위의 작업을 한 후 psql 종료 (\q) 하거나 'Ctrl +D'

728x90
반응형