MySQL 데이터베이스 엔진 기반 DB 인스턴스에 연결하기 - Amazon Relational Database Service

MySQL 데이터베이스 엔진 기반 DB 인스턴스에 연결하기

MySQL 데이터베이스 엔진을 실행하는 DB 인스턴스에 연결하려면 우선 DB 인스턴스를 생성해야 합니다. 자세한 정보는 Amazon RDS DB 인스턴스 생성 섹션을 참조하세요. Amazon RDS가 DB 인스턴스를 프로비저닝한 후에는 표준 MySQL 클라이언트 애플리케이션 또는 유틸리티를 사용하여 인스턴스에 연결할 수 있습니다. 연결 문자열에는 호스트 파라미터로 DB 인스턴스 엔드포인트의 DNS 주소와 포트 파라미터로 DB 인스턴스 엔드포인트의 포트 번호를 지정합니다.

RDS DB 인스턴스에 인증하려면, MySQL 및 AWS Identity and Access Management(IAM) 데이터베이스 인증의 인증 방법 중 하나를 사용할 수 있습니다.

MySQL 명령줄 클라이언트 같은 도구를 사용하여 MySQL DB 인스턴스에 연결할 수 있습니다. MySQL 명령줄 클라이언트 사용에 대한 자세한 내용은 MySQL 문서의 mysql - MySQL 명령줄 클라이언트를 참조하세요. 연결에 사용할 수 있는 GUI 기반 애플리케이션 중 하나는 MySQL Workbench입니다. 자세한 정보는 MySQL Workbench 다운로드 페이지 단원을 참조하십시오. MySQL 설치(MySQL 명령줄 클라이언트 포함)에 대한 정보는 MySQL 설치 및 업그레이드를 참조하세요.

대부분의 Linux 배포에는 Oracle MySQL 클라이언트 대신 MariaDB 클라이언트가 포함됩니다. Amazon Linux 2를 포함한 대부분의 RPM 기반 Linux 배포판에 MySQL 명령줄 클라이언트를 설치하려면 다음 명령을 실행합니다.

yum install mariadb

대부분의 DEB 기반 Linux 배포판에 MySQL 명령줄 클라이언트를 설치하려면 다음 명령을 실행합니다.

apt-get install mariadb-client

MySQL 명령줄 클라이언트의 버전을 확인하려면 다음 명령을 실행합니다.

mysql --version

현재 클라이언트 버전에 대한 MySQL 문서를 보려면 다음 명령을 실행합니다.

man mysql

Amazon VPC 외부에서 DB 인스턴스에 연결하려면 DB 인스턴스에 공개적으로 액세스할 수 있어야 하고, DB 인스턴스 보안 그룹의 인바운드 규칙을 사용하여 액세스 권한을 부여해야 하며, 기타 요구 사항을 충족해야 합니다. 자세한 내용은 Amazon RDS DB 인스턴스에 연결할 수 없음 섹션을 참조하세요.

MySQL DB 인스턴스에 대한 연결에 SSL(Secure Sockets Layer) 암호화를 사용할 수 있습니다. 자세한 정보는 MySQL DB 인스턴스와 함께 SSL 사용 섹션을 참조하세요. AWS Identity and Access Management(IAM) 데이터베이스 인증을 사용하는 경우 SSL 연결을 사용해야 합니다. 자세한 정보는 MariaDB, MySQL 및 PostgreSQL을 위한 IAM 데이터베이스 인증 섹션을 참조하세요.

웹 서버에서 DB 인스턴스에 연결할 수도 있습니다. 자세한 내용은 자습서: 웹 서버 및 Amazon RDS DB 인스턴스 생성 섹션을 참조하세요.

참고

SSL을 사용한 MariaDB DB 인스턴스 연결에 대한 자세한 내용은 MariaDB 데이터베이스 엔진을 실행하는 DB 인스턴스에서 데이터베이스에 연결 단원을 참조하십시오.

MySQL DB 인스턴스에 대한 연결 정보 찾기

DB 인스턴스의 연결 정보에는 엔드포인트, 포트 및 유효한 데이터베이스 사용자(예: 마스터 사용자)가 포함됩니다. 예를 들어 엔드포인트 값이 mydb.123456789012.us-east-1.rds.amazonaws.com이라고 가정합니다. 이 경우 포트 값은 3306이고 데이터베이스 사용자는 admin입니다. 이 정보를 바탕으로 연결 문자열에 다음 값을 지정합니다.

  • 호스트 또는 호스트 이름 또는 DNS 이름에 mydb.123456789012.us-east-1.rds.amazonaws.com을 지정합니다.

  • 포트에 대해 3306을 지정합니다.

  • 사용자에 admin을 지정합니다.

DB 인스턴스에 연결하려면 MySQL DB 엔진에 대해 임의의 클라이언트를 사용합니다. 예를 들어 MySQL 명령줄 클라이언트 또는 MySQL 워크벤치를 사용할 수 있습니다.

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. 탐색 창에서 [데이터베이스(Database)] 를 선택하여 DB 인스턴스 목록을 표시합니다.

  3. MySQL DB 인스턴스의 이름을 선택하여 세부 정보를 표시합니다.

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

    
                                DB 인스턴스의 엔드포인트 및 포트
  5. 마스터 사용자 이름을 찾아야 하는 경우 [구성(Configuration)] 탭을 선택하고 [마스터 사용자 이름(Master username)] 값을 확인합니다.

AWS CLI를 사용하여 MySQL DB 인스턴스의 연결 정보를 찾으려면 describe-db-instances 명령을 호출합니다. 이 호출에서 DB 인스턴스 ID, 엔드포인트, 포트 및 마스터 사용자 이름을 쿼리합니다.

Linux, macOS 또는 Unix의 경우는 다음과 같습니다.

aws rds describe-db-instances \ --filters "Name=engine,Values=mysql" \ --query "*[].[DBInstanceIdentifier,Endpoint.Address,Endpoint.Port,MasterUsername]"

Windows의 경우:

aws rds describe-db-instances ^ --filters "Name=engine,Values=mysql" ^ --query "*[].[DBInstanceIdentifier,Endpoint.Address,Endpoint.Port,MasterUsername]"

다음과 유사하게 출력되어야 합니다.

[ [ "mydb1", "mydb1.123456789012.us-east-1.rds.amazonaws.com", 3306, "admin" ], [ "mydb2", "mydb2.123456789012.us-east-1.rds.amazonaws.com", 3306, "admin" ] ]

Amazon RDS API를 사용하여 DB 인스턴스의 연결 정보를 찾으려면 DescribeDBInstances 작업을 호출합니다. 출력에서 엔드포인트 주소, 엔드포인트 포트 및 마스터 사용자 이름의 값을 찾습니다.

MySQL 명령줄 클라이언트에서 연결(암호화되지 않음)

중요

클라이언트와 서버가 동일한 VPC에 있고 네트워크를 신뢰할 수 있는 경우에만 암호화되지 않은 MySQL 연결을 사용합니다. 암호화된 연결 사용에 대한 자세한 내용은 MySQL 명령줄 클라이언트에서 SSL을 사용하여 연결(암호화) 섹션을 참조하세요.

MySQL 명령줄 클라이언트를 사용하여 DB 인스턴스에 연결하려면 클라이언트 컴퓨터의 명령 프롬프트에서 다음 명령을 입력합니다. -h 파라미터의 경우 해당 DB 인스턴스의 DNS 이름(엔드포인트)으로 대체합니다. -p 파라미터에는 DB 인스턴스의 포트로 대체합니다. -u 파라미터에는 마스터 사용자와 같이 유효한 데이터베이스 사용자의 사용자 이름으로 대체합니다. 입력 프롬프트가 표시되면 마스터 사용자 암호를 입력합니다.

mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com -P 3306 -u mymasteruser -p

사용자에 대한 암호를 입력하면 다음과 유사한 출력이 나타납니다.

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 350 Server version: 5.6.40-log MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>

MySQL 명령줄 클라이언트에서 SSL을 사용하여 연결(암호화)

Amazon RDS는 DB 인스턴스가 생성될 때 인스턴스의 SSL 인증서를 만듭니다. SSL 인증서 확인을 활성화하는 경우에는 SSL 인증서에 스푸핑 공격으로부터 보호해주는 SSL 인증서를 위한 일반 이름(CN)으로 DB 인스턴스 엔드포인트가 포함됩니다. SSL을 사용하여 DB 인스턴스에 연결하면, 기본 암호 인증 또는 IAM 데이터베이스 인증을 사용할 수 있습니다. IAM 데이터베이스 인증을 사용하여 DB 인스턴스에 연결하려면 MariaDB, MySQL 및 PostgreSQL을 위한 IAM 데이터베이스 인증 단원을 참조하십시오. 기본 암호 인증을 사용하여 DB 인스턴스에 연결하려면 다음의 단계를 따릅니다.

MySQL 명령줄 클라이언트를 사용하여 SSL을 통해 DB 인스턴스에 연결하는 방법

  1. 모든 AWS 리전에 적용되는 루트 인증서를 다운로드할 수 있습니다.

    인증서 다운로드에 대한 자세한 내용은 SSL/TLS를 사용하여 DB 인스턴스에 대한 연결 암호화 단원을 참조하십시오.

  2. MySQL 명령줄 클라이언트를 사용하여 SSL을 통해 DB 인스턴스에 연결하려면 명령 프롬프트에 다음 명령을 입력합니다. -h 파라미터의 경우 해당 DB 인스턴스의 DNS 이름(엔드포인트)으로 대체합니다. --ssl-ca 파라미터에는 해당하는 SSL 인증서 파일 이름으로 대체합니다. -p 파라미터에는 DB 인스턴스의 포트로 대체합니다. -u 파라미터에는 마스터 사용자와 같이 유효한 데이터베이스 사용자의 사용자 이름으로 대체합니다. 입력 프롬프트가 표시되면 마스터 사용자 암호를 입력합니다.

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem -P 3306 -u mymasteruser -p
  3. SSL 연결에서 SSL 인증서의 엔드포인트와 비교하여 DB 인스턴스 엔드포인트를 확인하도록 요구할 수 있습니다.

    MySQL 5.7 이상인 경우:

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-mode=VERIFY_IDENTITY -P 3306 -u mymasteruser -p

    MySQL 5.6 이전인 경우:

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-verify-server-cert -P 3306 -u mymasteruser -p
  4. 입력 프롬프트가 표시되면 마스터 사용자 암호를 입력합니다.

출력은 다음과 비슷합니다.

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 350 Server version: 5.6.40-log MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>

MySQL Workbench에서 연결

MySQL Workbench에서 연결하려면

  1. MySQL Workbench 다운로드에서 MySQL Workbench를 다운로드하고 설치합니다.

  2. MySQL Workbench를 엽니다.

    
                        MySQL Workbench
  3. 데이터베이스에서 Manage Connections(연결 관리)를 선택합니다.

  4. Manage Server Connections(서버 연결 관리) 창에서 새로 생성을 선택합니다.

  5. Connect to Database(데이터베이스에 연결) 창에 다음 정보를 입력합니다.

    • Stored Connection(저장된 연결) – 연결에 MyDB와 같은 이름을 입력합니다.

    • Hostname(호스트 이름) – DB 인스턴스 엔드포인트를 입력합니다.

    • 포트 – DB 인스턴스에서 사용한 포트를 입력합니다.

    • 사용자 이름 – 마스터 사용자와 같이 유효한 데이터이스 사용자의 사용자 이름을 입력합니다.

    • 암호 – 선택적으로 Store in Vault(볼트에 저장)를 선택한 후 사용자의 암호를 입력하고 저장합니다.

    창은 다음과 비슷하게 표시됩니다.

    
                        MySQL Workbench 연결 창

    MySQL Workbench의 기능을 사용하여 연결을 사용자 지정할 수 있습니다. 예를 들어, SSL 탭을 사용하여 SSL 연결을 구성할 수 있습니다. MySQL Workbench 사용에 대한 자세한 내용은 MySQL Workbench 설명서를 참조하십시오.

  6. 선택적으로 연결 테스트를 선택하여 DB 인스턴스에 대한 연결이 성공적인지 확인합니다.

  7. 닫기(Close)를 선택합니다.

  8. 데이터베이스에서 Connect to Database(데이터베이스에 연결)를 선택합니다.

  9. Stored Connection(저장된 연결)에서 연결을 선택합니다.

  10. 확인을 선택합니다.

MySQL용 Amazon Web Services JDBC 드라이버와 연결

AWS JDBC Driver for MySQL은 RDS for MySQL을 위해 설계된 클라이언트 드라이버입니다. 기본적으로 AWS JDBC Driver for MySQL은 RDS for MySQL와 함께 사용하도록 설정을 최적화했습니다.

AWS JDBC Driver for MySQL은 MySQL Connector/J 드라이버와 즉시 호환됩니다. 커넥터를 설치하거나 업그레이드하려면 애플리케이션 CLASSPATH에 있는 MySQL 커넥터 .jar file을 MySQL.jar 파일용 AWS JDBC 드라이버로 교체하고, 연결 URL 접두사 jdbc:mysql://jdbc:mysql:aws://로 업데이트합니다.

AWS JDBC Driver for MySQL 및 사용 방법에 대한 전체 지침에 관한 자세한 내용은 AWS JDBC Driver for MySQL GitHub 리포지토리를 참조하세요.

MySQL DB 인스턴스에 대한 연결 문제 해결

새로운 DB 인스턴스의 연결 오류가 발생하는 두 가지 공통 원인은 다음과 같습니다.

  • 보안 그룹을 사용하여 DB 인스턴스를 생성하였지만 이 보안 그룹이 MySQL 애플리케이션 또는 유틸리티를 실행 중인 디바이스나 Amazon EC2 인스턴스에서 연결을 승인하지 않는 경우. DB 인스턴스가 VPC 내부에서 생성된 경우 이 인스턴스의 VPC 보안 그룹에서 연결 권한을 부여해야 합니다. 자세한 내용은 Amazon Virtual Private Cloud VPC 및 Amazon RDS 섹션을 참조하세요.

    보안 그룹에서 인바운드 규칙을 추가하거나 편집할 수 있습니다. 소스에서 내 IP를 선택합니다. 이렇게 하면 브라우저에서 감지된 IP 주소에서 DB 인스턴스에 액세스할 수 있습니다.

    DB 인스턴스가 VPC 외부에서 생성된 경우 이 인스턴스의 DB 보안 그룹에서 연결 권한을 부여해야 합니다.

  • 포트 3306을 사용해 DB 인스턴스를 만들었는데 기업 방화벽 규칙에 따라 기업 네트워크의 디바이스에서 해당 포트에 연결하는 것이 차단된 경우. 이 오류를 수정하려면 인스턴스를 다른 포트로 다시 만들어야 합니다.

연결 문제에 대한 자세한 내용은 Amazon RDS DB 인스턴스에 연결할 수 없음 단원을 참조하십시오.