3.3. PostgreSQL 사용자 생성
PostgreSQL 사용자는 다음 유형입니다.
-
postgresLinux 시스템 사용자:pg_dump와 같은 PostgreSQL 서버 및 클라이언트 애플리케이션을 실행하는 데만 사용합니다. 데이터베이스 생성 및 사용자 관리와 같은 PostgreSQL 관리에 대한 대화형 작업에는postgres시스템 사용자를 사용하지 마십시오. -
데이터베이스 슈퍼유저: 기본
postgresPostgreSQL 슈퍼유저는postgres시스템 사용자와 관련이 없습니다./var/lib/pgsql/data/pg_hba.conf파일에서postgres슈퍼유저의 액세스를 제한할 수 있습니다. 그렇지 않으면 다른 권한 제한이 없습니다. 다른 데이터베이스 슈퍼유저도 생성할 수 있습니다. 특정 데이터베이스 액세스 권한이 있는 역할:
- 데이터베이스 사용자: 기본적으로 로그인할 수 있는 권한이 있습니다.
- 사용자 그룹: 그룹 전체에 대한 관리 권한을 활성화합니다.
역할은 데이터베이스 개체(예: 테이블 및 함수)를 소유할 수 있으며 SQL 명령을 사용하여 다른 역할에 오브젝트 권한을 할당할 수 있습니다.
표준 데이터베이스 관리 권한에는 SELECT, Cryostat,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER,CREATE,CONNECT,TEMPORARY,EXECUTE, USAGE 가 포함됩니다.
역할 속성은 LOGIN,SUPERUSER,CREATEDB 및 CREATEROLE 과 같은 특수 권한입니다.
슈퍼유저가 아닌 역할로 대부분의 작업을 수행합니다. 일반적인 방법은 CREATEDB 및 CREATEROLE 권한이 있는 역할을 생성하고 데이터베이스 및 역할의 일상적인 관리에 이 역할을 사용하는 것입니다.
사전 요구 사항
- PostgreSQL 서버가 설치되어 있어야 합니다.
- 데이터베이스 클러스터가 초기화됩니다.
-
/var/lib/pgsql/data/postgresql.conf파일의password_encryption매개변수는scram-sha-256로 설정됩니다. -
/var/lib/pgsql/data/pg_hba.conf파일의 항목은scram-sha-256해시 알고리즘을 인증 방법으로 사용합니다.
프로세스
postgres시스템 사용자로 로그인하거나 이 사용자로 전환합니다.# su - postgresPostgreSQL 대화형 터미널을 시작합니다.
$ psql psql (16.4) Type "help" for help. postgres=#선택 사항: 현재 데이터베이스 연결에 대한 정보를 가져옵니다.
postgres=# \conninfo You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".mydbuser라는 사용자를 만들고 암호를 설정한 다음CREATEROLE및CREATEDB권한을 사용자에게 할당합니다.postgres=# CREATE USER mydbuser WITH PASSWORD '<password>' CREATEROLE CREATEDB; CREATE ROLE이제
mydbuser사용자는 일상적인 데이터베이스 관리 작업을 수행할 수 있습니다: 데이터베이스를 생성하고 사용자 인덱스를 관리합니다.\qmeta 명령을 사용하여 대화형 터미널에서 로그아웃합니다.postgres=# \q
검증
PostgreSQL 터미널에
mydbuser로 로그인하고 호스트 이름을 지정하고 초기화 중에 생성된 기본postgres데이터베이스에 연결합니다.# psql -U mydbuser -h 127.0.0.1 -d postgres Password for user mydbuser: Type the password. psql (16.4) Type "help" for help. postgres=>데이터베이스를 생성합니다.
postgres=> CREATE DATABASE <db_name>;세션에서 로그아웃합니다.
postgres=# \q새 데이터베이스에
mydbuser로 연결합니다.# psql -U mydbuser -h 127.0.0.1 -d <db_name> Password for user mydbuser: psql (16.4) Type "help" for help. mydatabase=>