English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PostgreSQL 권한(PRIVILEGES)

데이터베이스 객체를 생성할 때마다 소유자가 할당됩니다. 소유자는 대개 create 문을 실행한 사람입니다.

대부분의 객체 유형은 초기 상태에서는 소유자(또는 관리자)만 객체를 수정하거나 제거할 수 있습니다. 다른 역할이나 사용자가 사용할 수 있도록 권한을 설정해야 합니다.

PostgreSQL에서 권한은 다음과 같은 몇 가지로 나뉩니다:

  • SELECT

  • INSERT

  • UPDATE

  • DELETE

  • TRUNCATE

  • REFERENCES

  • TRIGGER

  • CREATE

  • CONNECT

  • TEMPORARY

  • EXECUTE

  • USAGE

대상의 유형(테이블, 함수 등)에 따라 해당 권한을 대상에 적용합니다.

사용자에 대한 권한을 부여하려면 GRANT 명령어를 사용할 수 있습니다.

GRANT 문법

GRANT 명령어의 기본 문법은 다음과 같습니다:

GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
  • privilege − 값으로는 SELECT, INSERT, UPDATE, DELETE, RULE, ALL이 될 수 있습니다.

  • object − 접근 권한을 부여할 대상의 이름입니다. 가능한 대상은 table, view, sequence입니다.

  • PUBLIC − 모든 사용자를 의미합니다.

  • GROUP group − 사용자 그룹에 권한을 부여합니다.

  • username − 권한을 부여할 사용자 이름. PUBLIC은 모든 사용자를 대표하는 단축 형식입니다。

또한, REVOKE 명령어를 사용하여 권한을 취소할 수 있습니다. REVOKE 문법:

REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }

온라인 예제

권한을 이해하기 위해 사용자를 생성합니다:

w3codeboxdb=# CREATE USER w3codebox WITH PASSWORD 'password';
CREATE ROLE

정보 CREATE ROLE은 사용자 "w3codebox"를 취소합니다。

온라인 예제

COMPANY 테이블 생성(COMPANY SQL 파일 다운로드 ),데이터 내용은 다음과 같습니다:

w3codeboxdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

현재 사용자 "w3codebox"에게 권한을 부여합니다:

w3codeboxdb=# GRANT ALL ON COMPANY TO w3codebox;
GRANT

정보 GRANT은 모든 권한이 "w3codebox"를 취소합니다。

아래에서 사용자 "w3codebox"의 권한:

w3codeboxdb=# REVOKE ALL ON COMPANY FROM w3codebox;
REVOKE

정보 REVOKE는 사용자의 권한이 취소되었다는 의미입니다。

사용자를 삭제할 수도 있습니다:

w3codeboxdb=# DROP USER w3codebox;
DROP ROLE

정보 DROP ROLE은 사용자 "w3codebox"이(가) 데이터베이스에서 제거되었습니다。