PostgreSQL에 로그인 및 인증

David Mbochi Njonge 2023년6월20일
  1. PostgreSQL에서 데이터베이스에 연결
  2. PostgreSQL에서 createusercreatedb 사용
  3. SQL 관리 명령을 사용하고 TCP를 통한 암호로 연결
PostgreSQL에 로그인 및 인증

이 문서에서는 특정 PostgreSQL 데이터베이스에 액세스하기 위해 로그인하고 인증을 받는 방법에 대해 설명합니다.

PostgreSQL에서 데이터베이스에 연결

PostgreSQL 데이터베이스에 연결할 때 연결할 데이터베이스, 서버의 호스트 주소, 포트 번호 및 사용자 이름을 만들어야 합니다. 다음 명령줄 인수를 사용하여 매개 변수를 제공할 수 있습니다.

david@david-HP-ProBook-6470b:~$ psql -h localhost -U postgres -p 5432

인수가 생략될 때 사용되는 기본 연결 매개변수가 있습니다. 사용자 이름과 데이터베이스를 생략하면 서버는 운영 체제의 사용자 이름을 사용합니다.

선택한 데이터베이스도 운영 체제와 동일한 이름을 가지며 이러한 매개변수가 존재하지 않는 경우 다음 오류가 발생할 수 있습니다.

david@david-HP-ProBook-6470b:~$ psql
psql: error: FATAL:  role "david" does not exist

위의 예에서 서버는 존재하지 않는 사용자 이름 david를 사용하여 david라는 데이터베이스에 액세스하려고 시도합니다.

PostgreSQL에서 createusercreatedb 사용

기본적으로 PostgreSQL 서버에는 사용자 이름이 postgres인 사용자와 postgres라는 데이터베이스가 있습니다. 다음 명령을 사용하여 운영 체제와 동일한 이름으로 데이터베이스 사용자를 생성합니다.

david@david-HP-ProBook-6470b:~$ sudo -u postgres createuser -s $USER

다음으로 새 사용자 david에 대해 createdb 명령을 사용하여 데이터베이스를 만듭니다.

david@david-HP-ProBook-6470b:~$ createdb employee_db

지금 PSQL을 사용하여 로그인할 수 있는지 확인하려면 연결할 데이터베이스를 지정해야 합니다.

david@david-HP-ProBook-6470b:~$ psql -d employee_db

출력:

psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
Type "help" for help.

employee_db=# 

데이터베이스가 기본적으로 운영 체제(예: 제 경우에는 david)로 설정되기를 원한다고 가정합니다. 데이터베이스 이름을 묻는 -d 인수를 사용하지 않고 createdb 명령을 사용하십시오.

david@david-HP-ProBook-6470b:~$ createdb

매개변수를 지정하지 않고 PSQL을 사용하여 PostgreSQL 서버에 로그인을 시도하면 로그인에 사용되는 기본 사용자 및 데이터베이스는 daviddavid입니다.

david@david-HP-ProBook-6470b:~$ psql

출력:

psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
Type "help" for help.

david=# 

SQL 관리 명령을 사용하고 TCP를 통한 암호로 연결

SQL에는 PostgreSQL 데이터베이스에서 사용자와 해당 데이터베이스를 생성하는 데 활용할 수 있는 명령이 있습니다. 다음 명령은 PostgreSQL 서버에 수퍼유저로 로그인하는 것입니다.

david@david-HP-ProBook-6470b:~$ sudo -u postgres psql postgres

운영 체제의 비밀번호를 입력하고 비밀번호가 프롬프트되면 Enter를 누르십시오.

[sudo] password for david: 

출력:

psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
Type "help" for help.

postgres=#

PSQL 셸에서 사용자와 데이터베이스를 생성하고 사용자를 생성된 데이터베이스와 연결합니다.

postgres=# CREATE ROLE john LOGIN PASSWORD 'john';
CREATE ROLE
postgres=# CREATE DATABASE products_db WITH OWNER = john;
CREATE DATABASE
postgres=# 

마지막으로 TCP를 통한 PSQL 명령을 사용하는 로그인은 호스트, 데이터베이스, 사용자 및 포트 번호를 지정합니다. PostgreSQL 서버의 기본 포트 번호는 5432입니다.

다음 명령은 TCP를 통해 새 사용자로 로그인할 수 있는지 확인합니다.

david@david-HP-ProBook-6470b:~$ psql -h localhost -d products_db -U john -p 5432

암호를 입력하라는 메시지가 표시되면 사용자 이름과 동일한 이름인 john으로 설정한 암호를 입력하고 키보드의 Enter 버튼을 누릅니다.

Password for user john: 

출력:

psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

products_db=> 
David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub

관련 문장 - PostgreSQL Database