본문 바로가기
DBMS

[PostgreSQL 설치와 운영] #4. psql 접속과 기본 명령어

by 이미존재 2022. 10. 19.
반응형

■ PSQL 접속 환경 구축 및 기본 명령어(Ubuntu 22.04 LTS에서 apt로 설치된 환경)


 ▶ psql - PostgreSQL interactive terminal.
  : PostgreSQL 관리를 위한 커멘드 라인 기반 도구입니다. 오라클의 sqlplus, mariadb mysql과 같다고 보시면 됩니다.


1. psql 접속 하기

 1) posgres(데이터베이스 관리용 OS계정)계정 에서 psql 접속(OS관리용 계정과 데이터베이스 관리용 계정명은 postgres로 동일합니다.)
  - sudo 명령으로 postgres 접속

eddy@raonyn:~$ sudo -i -u postgres
postgres@raonyn:~$ 

  ※ 참고 : sudo로 명령어 실행시 아래와 같은 오류 메시지 발생 하는 경우

            sudo: unable to resolve host ... ...
  =>  /etc/hostname 과 /etc/hosts에 적혀있는 hostname이 다를경우 발생합니다. 2개 파일의 명칭을 같게 해주면 됩니다.
postgres@raonyn:~$  cat /etc/hostname 
raonyn

postgres@raonyn:~$  cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 ubuntu2022  # <= /etc/hostname과 동일하게 바꿔줍니다.


  2) psql 접속
   - psql 접속 명령어 : psql -U user_name -d db_name
   - psql 접속하기

postgres@raonyn:~$ psql
psql (14.5 (Ubuntu 14.5-0ubuntu0.22.04.1))
Type "help" for help.

postgres=# 

 ※ 참고 :  psql로 패스워드 없이 바로 접속 가능한 것은 pg_hba.conf에서 아래와 같이 postgres를 peer로 설정했기 때문입니다.

# Database administrative login by Unix domain socket
local   all             postgres                                peer


 3) postgres 데이터베이스 계정 패스워드 변경(패스워드 변경 작업은 차후에 해도 무방 함)
  - postgres 계정은 최초 설치시 패스워드가 등록되어 있지 않습니다.
  - postgres 패스워드 변경

postgres=# alter user postgres with password '1234';
ALTER ROLE

  - 패스워드를 변경 했다면 아래와 같이 pg_hba.conf파일의 접속 method를 패스워드 방식(scram-sha-256)으로 바꾸고 데이터베이스를 재기동합니다.

# Database administrative login by Unix domain socket
local   all             postgres                                scram-sha-256

 

  - psql 접속시 아래와 같이 패스워드 입력을 요구합니다.

postgres@raonyn:~$ psql -U postgres -d postgres
Password for user postgres: 
psql (14.5 (Ubuntu 14.5-0ubuntu0.22.04.1))
Type "help" for help.

postgres=# 

 

2. psql 기본 명령어

 4) psql 기본 명령어
  - 도움말을 보고 싶으면 아래와 같이 입력합니다.
       \h for help with SQL commands
       \? for help with psql commands
 

 - 데이터베이스 확인

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

 

  - DB 데이터베이스 선택
postgres=# \c [데이터베이스 명]

postgres=# \c postgres
You are now connected to database "postgres" as user "postgres".

 

  - DB 사용자 생성

postgres=# create user berasix with password '1234';
CREATE ROLE

 

- DB 사용자 권한 정보

postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 berasix   |                                                            | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

 


  - DB 데이터베이스 생성
postgres=# CREATE DATABASE dbname OWNER ownnerName

postgres=# CREATE DATABASE berasixdb OWNER berasix;
CREATE DATABASE
postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 berasixdb | berasix  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

 


  - DB 테이블 출력
berasix=# \dt

  - DB 해당 테이블 정보 출력 
berasix=# \d [테이블명] 

  - DB 나가기(종료)
berasix=# \q

728x90

댓글