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 - postgres
# su - postgresCopy to Clipboard Copied! Toggle word wrap Toggle overflow PostgreSQL 대화형 터미널을 시작합니다.
psql
$ psql psql (16.4) Type "help" for help. postgres=#Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 현재 데이터베이스 연결에 대한 정보를 가져옵니다.
postgres=# \conninfo You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
postgres=# \conninfo You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".Copy to Clipboard Copied! Toggle word wrap Toggle overflow mydbuser라는 사용자를 만들고 암호를 설정한 다음CREATEROLE및CREATEDB권한을 사용자에게 할당합니다.postgres=# CREATE USER mydbuser WITH PASSWORD '<password>' CREATEROLE CREATEDB; CREATE ROLE
postgres=# CREATE USER mydbuser WITH PASSWORD '<password>' CREATEROLE CREATEDB; CREATE ROLECopy to Clipboard Copied! Toggle word wrap Toggle overflow 이제
mydbuser사용자는 일상적인 데이터베이스 관리 작업을 수행할 수 있습니다: 데이터베이스를 생성하고 사용자 인덱스를 관리합니다.\qmeta 명령을 사용하여 대화형 터미널에서 로그아웃합니다.postgres=# \q
postgres=# \qCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
PostgreSQL 터미널에
mydbuser로 로그인하고 호스트 이름을 지정하고 초기화 중에 생성된 기본postgres데이터베이스에 연결합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 데이터베이스를 생성합니다.
postgres=> CREATE DATABASE <db_name>;
postgres=> CREATE DATABASE <db_name>;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 세션에서 로그아웃합니다.
postgres=# \q
postgres=# \qCopy to Clipboard Copied! Toggle word wrap Toggle overflow 새 데이터베이스에
mydbuser로 연결합니다.psql -U mydbuser -h 127.0.0.1 -d <db_name>
# psql -U mydbuser -h 127.0.0.1 -d <db_name> Password for user mydbuser: psql (16.4) Type "help" for help. mydatabase=>Copy to Clipboard Copied! Toggle word wrap Toggle overflow