PostgreSQL 데이터베이스 엔진을 실행하는 DB 인스턴스에 연결 - Amazon Relational Database Service

PostgreSQL 데이터베이스 엔진을 실행하는 DB 인스턴스에 연결

Amazon RDS가 DB 인스턴스를 프로비저닝한 후에는 표준 SQL 클라이언트 애플리케이션을 사용해 인스턴스에 연결할 수 있습니다. 연결하려면 먼저 DB 인스턴스를 사용할 수 있고 액세스할 수 있어야 합니다. VPC 외부에서 인스턴스에 연결할 수 있는지 여부는 Amazon RDS DB 인스턴스를 생성한 방법에 따라 달라집니다.

  • DB 인스턴스를 퍼블릭으로 생성한 경우 VPC 외부의 디바이스 및 Amazon EC2 인스턴스를 데이터베이스에 연결할 수 있습니다.

  • DB 인스턴스를 프라이빗으로 생성한 경우 Amazon VPC 내의 Amazon EC2 인스턴스 및 디바이스만 데이터베이스에 연결할 수 있습니다.

EC2 인스턴스에서 DB 인스턴스에 연결하려면 EC2 인스턴스에 PostgreSQL 클라이언트를 설치하면 됩니다. psql 클라이언트를 Amazon Linux 2023에 설치하려면 다음 명령을 실행하세요.

sudo dnf install postgresql15

psql 클라이언트를 Amazon Linux 2에 설치하려면 다음 명령을 실행하세요.

sudo amazon-linux-extras install postgresql14

psql 클라이언트를 Ubuntu에 설치하려면 다음 명령을 실행하세요.

sudo apt-get install -y postgresql14

DB 인스턴스가 퍼블릭인지 프라이빗인지 확인하려면 AWS Management Console을 사용하여 인스턴스의 연결 & 보안(Connectivity & security) 탭을 봅니다. 보안(Security) 아래에서 "퍼블릭 액세스 가능(Publicly accessible)" 값이 아니요(No)이면 프라이빗이고 예(Yes)이면 퍼블릭입니다.

다양한 Amazon RDS 및 Amazon VPC 구성과 이러한 구성이 접근성에 미치는 영향에 대한 자세한 내용은 VPC에서 DB 인스턴스에 액세스하는 시나리오 섹션을 참조하세요.

DB 인스턴스를 사용할 수 있고 액세스할 수 있는 경우 SQL 클라이언트 애플리케이션에 다음 정보를 제공하여 연결할 수 있습니다.

  • 인스턴스의 호스트 이름(DNS 이름) 역할을 하는 DB 인스턴스 엔드포인트입니다.

  • DB 인스턴스 서버가 수신 대기하는 포트입니다. PostgreSQL의 경우 기본 포트는 5432입니다.

  • DB 인스턴스의 사용자 이름 및 암호입니다. 기본으로 설정된 PostgreSQL의 '기본 사용자 이름'은 postgres입니다.

  • 데이터베이스의 이름 및 암호입니다(DB 이름).

이러한 세부 정보는 AWS Management Console, AWS CLI describe-db-instances 명령 또는 Amazon RDS API DescribeDBInstances 작업을 사용하여 확인할 수 있습니다.

AWS Management Console을 사용하여 엔드포인트, 포트 번호, DB 이름을 찾는 방법
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. RDS 콘솔을 연 다음 데이터베이스를 선택해 DB 인스턴스의 목록을 표시합니다.

  3. 세부 정보를 표시하고자 하는 PostgreSQL DB 인스턴스 이름을 선택합니다.

  4. Connectivity & security(연결 및 보안) 탭에서 엔드포인트를 복사합니다. 또한 포트 번호를 적어 둡니다. DB 인스턴스에 연결하려면 엔드포인트와 포트 번호가 모두 필요합니다.

    
                            RDS 콘솔에서 엔드포인트 가져오기
  5. 구성 탭에 나와 있는 DB 이름을 적어 둡니다. RDS for PostgreSQL 인스턴스를 만들 때 데이터베이스를 생성한 경우 DB 이름 아래에 이름이 표시됩니다. 데이터베이스를 만들지 않은 경우 DB 이름에 대시(‐)가 표시됩니다.

    
                            RDS 콘솔에서 DB 이름 가져오기

다음은 PostgreSQL DB 인스턴스에 연결하는 두 가지 방법입니다. 첫 번째 예에서는 PostgreSQL의 잘 알려진 오픈 소스 관리 및 개발 도구인 pgAdmin을 사용합니다. 두 번째 예에서는 PostgreSQL 설치에 속하는 명령행 유틸리티인 psql을 사용합니다.

pgAdmin을 사용하여 RDS for PostgreSQL DB 인스턴스에 연결

오픈 소스 도구인 pgAdmin을 사용하여 RDS for PostgreSQL DB 인스턴스에 연결할 수 있습니다. 클라이언트 컴퓨터에 로컬 PostgreSQL 인스턴스가 없어도 http://www.pgadmin.org/에서 pgAdmin을 다운로드하여 설치할 수 있습니다.

pgAdmin을 사용하여 RDS for PostgreSQL DB 인스턴스에 연결하는 방법
  1. 클라이언트 컴퓨터에서 pgAdmin 애플리케이션을 실행합니다.

  2. [Dashboard] 탭에서 [Add New Server]를 선택합니다.

  3. [Create - Server] 대화 상자에서 pgAdmin의 서버를 식별하기 위해 [General] 탭에 이름을 입력합니다.

  4. [Connection] 탭에서 사용자 DB 인스턴스에 있는 다음 정보를 입력합니다.

    • Host(호스트)에 엔드포인트를 입력합니다(예: mypostgresql.c6c8dntfzzhgv0.us-east-2.rds.amazonaws.com).

    • 포트에 할당된 포트를 입력합니다.

    • 사용자 이름(Username)에 DB 인스턴스를 생성할 때 입력한 사용자 이름을 입력합니다('기본 사용자 이름'을 기본값에서 변경한 경우 postgres).

    • 암호에 DB 인스턴스를 생성할 떄 입력했던 암호를 입력합니다.

  5. 저장을 선택합니다.

    연결 문제는 RDS for PostgreSQL 인스턴스에 대한 연결 문제 해결를 참조하십시오.

  6. pgAdmin 브라우저에서 데이터베이스에 액세스 하려면, [Servers], DB 인스턴스, [Databases]를 확장합니다. DB 인스턴스의 데이터베이스 이름을 선택합니다.

  7. SQL 명령을 입력할 수 있는 패널을 열려면, 도구, 쿼리 도구를 선택합니다.

psql을 사용하여 RDS for PostgreSQL DB 인스턴스에 연결

psql 명령줄 유틸리티의 로컬 인스턴스를 사용하여 RDS for PostgreSQL DB 인스턴스에 연결할 수 있습니다. 클라이언트 컴퓨터에 PostgreSQL 또는 psql 클라이언트를 설치해야 할 수도 있습니다.

PostgreSQL 웹 사이트에서 PostgreSQL 클라이언트를 다운로드할 수 있습니다. psql을 설치하려면 운영 체제 버전별 지침을 따르세요.

psql을 사용하여 RDS for PostgreSQL DB 인스턴스에 연결하려면 호스트(DNS) 정보, 액세스 자격 증명 및 데이터베이스 이름을 제공해야 합니다.

다음 형식 중 하나를 사용하여 RDS for PostgreSQL DB 인스턴스에 연결합니다. 연결이 되면 암호를 입력하라는 메시지가 표시됩니다. 배치 작업이나 스크립트에는 --no-password 옵션을 사용합니다. 이 옵션은 전체 세션에 대해 설정됩니다.

참고

서버에 암호 인증이 필요하고 다른 소스에서 암호를 사용할 수 없는 경우 --no-password를 사용한 연결 시도가 실패합니다. 자세한 내용은 psql 설명서를 참조하세요.

이 DB 인스턴스에 처음 연결하는 경우 또는 RDS for PostgreSQL 인스턴스에 대한 데이터베이스를 아직 생성하지 않은 경우 '기본 사용자 이름' 및 암호를 사용하여 postgres 데이터베이스에 연결할 수 있습니다.

Unix는 다음 형식을 사용합니다.

psql \ --host=<DB instance endpoint> \ --port=<port> \ --username=<master username> \ --password \ --dbname=<database name>

Windows는 다음 형식을 사용합니다.

psql ^ --host=<DB instance endpoint> ^ --port=<port> ^ --username=<master username> ^ --password ^ --dbname=<database name>

예를 들어 다음 명령은 가상 자격 증명을 사용해 mypgdb이라는 PostgreSQL DB 인스턴스에서 mypostgresql라는 데이터베이스에 연결합니다.

psql --host=mypostgresql.c6c8mwvfdgv0.us-west-2.rds.amazonaws.com --port=5432 --username=awsuser --password --dbname=mypgdb

AWS JDBC Driver for PostgreSQL에 연결

AWS JDBC Driver for PostgreSQL은 RDS for PostgreSQL과 함께 사용하도록 설계된 클라이언트 래퍼입니다. AWS JDBC Driver for PostgreSQL은 인증과 같은 AWS 기능을 활성화하여 커뮤니티 pgJDBC 드라이버의 기능을 확장합니다. AWS JDBC Driver for PostgreSQL 및 사용 방법에 관한 자세한 내용은 AWS JDBC Driver for PostgreSQL GitHub 리포지토리를 참조하세요.

AWS JDBC Driver for PostgreSQL은 AWS Identity and Access Management(IAM) 데이터베이스 인증 및 AWS Secrets Manager를 지원합니다. 드라이버에서 이러한 인증 메커니즘을 사용하는 방법에 대한 자세한 내용은 AWS IAM Authentication Plugin(IAM 인증 플러그인) 및 AWS JDBC Driver for PostgreSQL GitHub 리포지토리의 AWS Secrets Manager Plugin(플러그인)을 참조하세요.

IAM 데이터베이스 인증에 대한 자세한 내용은 MariaDB, MySQL 및 PostgreSQL IAM 데이터베이스 인증 단원을 참조하세요. Secrets Manager 사용에 대한 자세한 내용은 AWS Secrets Manager 사용 설명서를 참조하세요.

RDS for PostgreSQL 인스턴스에 대한 연결 문제 해결

Error – FATAL: database name does not exist

연결할 때 FATAL: database name does not exist 같은 오류가 발생하면 --dbname 옵션에 기본 데이터베이스 이름 postgres를 사용해봅니다.

Error – Could not connect to server: Connection timed out

DB 인스턴스에 연결할 수 없도록 만드는 가장 많은 오류가 Could not connect to server: Connection timed out.입니다. 이 오류 메시지가 표시되면 다음을 확인합니다.

  • 사용한 호스트 이름이 DB 인스턴스 엔드포인트이고 포트 번호가 올바른지 확인하십시오.

  • 외부 연결을 허용하도록 DB 인스턴스의 퍼블릭 액세스 가능성이 예(Yes)로 설정되어 있는지 확인합니다. 퍼블릭 액세스(Public access) 설정을 수정하려면 Amazon RDS DB 인스턴스 수정 섹션을 참조하세요.

  • 데이터베이스에 연결하는 사용자에게 CONNECT 액세스 권한이 있는지 확인합니다. 다음 쿼리를 사용하여 데이터베이스에 대한 연결 액세스를 제공할 수 있습니다.

    GRANT CONNECT ON DATABASE database name TO username;
  • DB 인스턴스에 할당된 보안 그룹에 모든 연결이 통과할 수 있는 방화벽을 통한 액세스를 허용하는 데 필요한 규칙이 있는지 확인하십시오. 기본값 포트 5432를 사용해 DB 인스턴스를 생성했는데, 기업 방화벽 규칙이 외부 회사 디바이스의 해당 포트 연결을 차단하는 경우를 예로 들 수 있습니다.

    이 오류를 수정하려면 다른 포트를 사용하도록 DB 인스턴스를 수정해야 합니다. 또 DB 인스턴스에 적용된 보안 그룹의 새로운 포트에 대한 연결이 허용되어야 합니다. 데이터베이스 포트(Database port) 설정을 수정하려면 Amazon RDS DB 인스턴스 수정 섹션을 참조하세요.

  • 또한 보안 그룹 액세스 규칙 오류 단원도 참조하십시오.

보안 그룹 액세스 규칙 오류

지금까지 가장 많이 발생하고 있는 연결 문제는 DB 인스턴스에 할당된 보안 그룹의 액세스 규칙과 관련이 있습니다. DB 인스턴스를 만들 때 기본 보안 그룹을 사용한 경우 인스턴스에 액세스할 수 있도록 허용하는 규칙이 보안 그룹에 없을 확률이 큽니다.

연결이 되도록 만들려면, 생성 때 DB 인스턴스에 할당한 보안 그룹이 DB 인스턴스 액세스를 허용해야 합니다. 예를 들어, DB 인스턴스가 VPC 내부에서 생성된 경우 이 인스턴스의 VPC 보안 그룹에서 연결 권한을 부여해야 합니다. 애플리케이션이 실행되고 있는 디바이스 또는 Amazon EC2 인스턴스의 연결을 승인하지 않는 보안 그룹을 사용하여 DB 인스턴스를 생성했는지 여부를 확인합니다.

보안 그룹에서 인바운드 규칙을 추가하거나 편집할 수 있습니다. 소스내 IP를 선택하면 브라우저에서 감지된 IP 주소에서 DB 인스턴스에 액세스할 수 있습니다. 자세한 내용은 보안 그룹을 생성하여 VPC 내부의 DB 인스턴스에 대한 액세스를 제공 섹션을 참조하세요.

또한, DB 인스턴스가 VPC 외부에서 생성된 경우에는 이 인스턴스의 데이터베이스 보안 그룹에서 이 연결을 승인해야 합니다.

Amazon RDS 보안 그룹에 대한 자세한 내용은 보안 그룹을 통한 액세스 제어 단원을 참조하십시오.