검색

4.2. PostgreSQL 사용자 생성

download PDF

PostgreSQL 사용자는 다음과 같은 유형입니다.

  • postgres UNIX 시스템 사용자 - pg_dump 와 같은 PostgreSQL 서버 및 클라이언트 애플리케이션을 실행하는 데만 사용해야 합니다. 데이터베이스 생성 및 사용자 관리와 같은 PostgreSQL 관리에서는 postgres 시스템 사용자를 사용하지 마십시오.
  • 데이터베이스 슈퍼유저 - 기본 postgres PostgreSQL 슈퍼유저는 postgres 시스템 사용자와 관련이 없습니다. pg_hba.conf 파일에서 postgres 슈퍼 유저에 대한 액세스를 제한할 수 있고, 그렇지 않으면 다른 권한 제한은 없습니다. 다른 데이터베이스 수퍼유저도 만들 수 있습니다.
  • 특정 데이터베이스 액세스 권한이 있는 역할:

    • 데이터베이스 사용자 - 기본적으로 로그인할 수 있는 권한이 있습니다.
    • 사용자 그룹 - 그룹 전체에 대한 권한 관리를 활성화합니다.

역할은 데이터베이스 개체(예: 테이블 및 함수)를 소유하고 SQL 명령을 사용하여 다른 역할에 개체 권한을 할당할 수 있습니다.

표준 데이터베이스 관리 권한에는 SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER,CREATE,CONNECT,TEMPORARY, EXECUTE, USAGE 등이 있습니다.

역할 속성은 LOGIN,SUPERUSER,CREATEDB 및 CREATE ROLE 과 같은 특수 권한입니다.

중요

대부분의 작업을 수퍼유저가 아닌 역할로 수행하는 것이 좋습니다. 일반적인 방법은 CREATEDB 및 CREATE ROLE 권한이 있는 역할을 생성하고 이 역할을 데이터베이스 및 역할의 모든 일상적인 관리에 사용하는 것입니다.

사전 요구 사항

  • PostgreSQL 서버가 설치되어 있어야 합니다.
  • 데이터베이스 클러스터가 초기화됩니다.

절차

  • 사용자를 만들려면 사용자의 암호를 설정하고 CREATEROLECREATEDB 권한을 사용자에게 할당합니다.

    postgres=# CREATE USER mydbuser WITH PASSWORD 'mypasswd' CREATEROLE CREATEDB;

    mydbuser 를 사용자 이름으로 바꾸고 mypasswd 를 사용자 암호로 교체합니다.

예 4.1. PostgreSQL 데이터베이스 초기화, 생성 및 연결

이 예제에서는 PostgreSQL 데이터베이스를 초기화하고 일상적인 데이터베이스 관리 권한이 있는 데이터베이스 사용자를 만드는 방법, 관리 권한이 있는 데이터베이스 사용자를 통해 모든 시스템 계정에서 액세스할 수 있는 데이터베이스를 만드는 방법을 보여줍니다.

  1. PosgreSQL 서버를 설치합니다.

    # dnf install postgresql-server
  2. 데이터베이스 클러스터를 초기화합니다.

    # postgresql-setup --initdb
    * Initializing database in '/var/lib/pgsql/data'
    * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
  3. 암호 해시 알고리즘을 scram-sha-256 로 설정합니다.

    1. /var/lib/pgsql/data/postgresql.conf 파일에서 다음 행을 변경합니다.

      #password_encryption = md5              # md5 or scram-sha-256

      다음으로 변경합니다.

      password_encryption = scram-sha-256
    2. /var/lib/pgsql/data/pg_hba.conf 파일에서 IPv4 로컬 연결에 대해 다음 행을 변경합니다.

      host    all             all             127.0.0.1/32            ident

      다음으로 변경합니다.

      host    all             all             127.0.0.1/32            scram-sha-256
  4. postgresql 서비스를 시작합니다.

    # systemctl start postgresql.service
  5. postgres 라는 시스템 사용자로 로그인합니다.

    # su - postgres
  6. PostgreSQL 대화형 터미널을 시작합니다.

    $ psql
    psql (13.7)
    Type "help" for help.
    
    postgres=#
  7. 선택 사항: 현재 데이터베이스 연결에 대한 정보를 가져옵니다.

    postgres=# \conninfo
    You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
  8. mydbuser 라는 사용자를 만들고, mydbuser 의 암호를 설정하고, mydbuserCREATEROLECREATEDB 권한을 할당합니다.

    postgres=# CREATE USER mydbuser WITH PASSWORD 'mypasswd' CREATEROLE CREATEDB;
    CREATE ROLE

    이제 mydbuser 사용자는 일상적인 데이터베이스 관리 작업을 수행할 수 있습니다: 데이터베이스를 생성하고 사용자 인덱스를 관리합니다.

  9. \q meta 명령을 사용하여 대화형 터미널에서 로그아웃합니다.

    postgres=# \q
  10. postgres 사용자 세션에서 로그아웃합니다.

    $ logout
  11. PostgreSQL 터미널에 mydbuser 로 로그인하고 호스트 이름을 지정하고 초기화 중에 생성된 기본 postgres 데이터베이스에 연결합니다.

    # psql -U mydbuser -h 127.0.0.1 -d postgres
    Password for user mydbuser:
    Type the password.
    psql (13.7)
    Type "help" for help.
    
    postgres=>
  12. mydatabase 라는 데이터베이스를 만듭니다.

    postgres=> CREATE DATABASE mydatabase;
    CREATE DATABASE
    postgres=>
  13. 세션에서 로그아웃합니다.

    postgres=# \q
  14. mydbuser 로 mydatabase에 연결합니다.

    # psql -U mydbuser -h 127.0.0.1 -d mydatabase
    Password for user mydbuser:
    psql (13.7)
    Type "help" for help.
    mydatabase=>
  15. 선택 사항: 현재 데이터베이스 연결에 대한 정보를 가져옵니다.

    mydatabase=> \conninfo
    You are connected to database "mydatabase" as user "mydbuser" on host "127.0.0.1" at port "5432".
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.