Postgresql 유저(User) / DB / 테이블(Table)

Hognod·2023년 8월 15일

Postgresql 접속

Postgresql에 접속하기 위해서는 현재 OS에 Login한 User를 Postgresql에 존재하는 User 중 하나로 변경해야 한다.

sudo -i -u postgres
  • postgres: Postgresql의 Default User이자 Default DB
psql
  • psql: Postgresql 접속 명령어
    • psql -d <DB> 또는 psql <DB> 명령어로 Default DB인 postgres가 아닌 다른 DB로 접속 가능

User 생성

CREATE USER <유저명> WITH PASSWORD '<패스워드>';
CREATE USER ubuntu WITH PASSWORD 'test-password';
  • Postgresql의 User를 OS에 Login한 User명과 동일하게 생성하면, OS User를 변경하는 과정을 생략하고 Postgresql에 접속할 수 있다.

Superuser 역할 부여

ALTER USER <유저명> WITH SUPERUSER;
ALTER USER ubuntu WITH SUPERUSER;

Database 생성

CREATE DATABASE <DB명>;
CREATE DATABASE "test-database";
  • - 등의 특수문자가 DB명에 들어갈 때는 큰 따옴표(")로 묶어주면 된다.

Database 소유권 할당

ALTER DATABASE <DB명> OWNER TO <유저명>;
ALTER DATABASE "test-database" OWNER TO ubuntu;
  • - 등의 특수문자가 DB명에 들어갈 때는 큰 따옴표(")로 묶어주면 된다.

Database 권한 할당

Postgresql 권한

GRANT <권한> ON <대상> TO <유저명> WITH GRANT OPTION;
GRANT ALL ON DATABASE "test-database" TO ubuntu WITH GRANT OPTION;
  • - 등의 특수문자가 DB명에 들어갈 때는 큰 따옴표(")로 묶어주면 된다.

  • 권한은 대상에 따라 달라지며 대략 아래와 같다.

    권한설명
    SELECT테이블이나 뷰에 데이터를 조회할 수 있다. UPDATE와 DELETE를하기 위해서도 필요하다.
    INSERT테이블에 새로운 데이터를 추가할 수 있다.
    UPDATE테이블의 데이터를 업데이트 할 수 있다.
    DELETE테이블에서 데이터를 삭제할 수 있다.
    TRUNCATE테이블의 데이터를 비울 수 있다.
    REFERENCES테이블과 컬럼에 외래 키 제약 조건을 만들 수 있다.
    TRIGGER테이블에 트리거를 만들 수 있다.
    CREATE대상이 데이터베이스의 경우 스키마를 만들 수 있다. 대상 스키마의 경우, 테이블 등의 개체를 만들 수 있다.
    CONNECT지정된 데이터베이스에 연결할 수 있다.
    TEMPORARY데이터베이스에 임시 테이블을 만들 수 있다.
    EXECUTE함수 또는 프로 시저 연산자의 사용을 허용한다.
    USAGE대상이 스키마의 경우는 객체에 대한 액세스를 허용한다. 대상이 스키가 아니면, 대상에 따라 권한이 부여 된다.
    ALL사용할 수 있는 권한을 정리해 허용한다.
  • 대상은 Table, Table의 Column, Database 등이다.

Table 생성

CREATE TABLE 테이블명 (필드명1 자료형(크기), 필드명2 자료형(크기), 필드명3 자료형(크기);
CREATE TABLE "Test" (id int, name varchar(10), password varchar(10));
  • 대문자와 소문자는 별개로 인식된다.
  • Table명에 대문자가 들어갈 때는 큰 따옴표(")로 묶어주면 된다. 만약 큰 따옴표를 생략하게 되면 소문자로 통일되어 Table이 생성된다.

1개의 댓글

comment-user-thumbnail
2023년 8월 15일

많은 도움이 되었습니다, 감사합니다.

답글 달기