만든 Compute Engine 인스턴스에 MySQL을 수동으로 설치하려면 다음 단계를 완료하세요.
Compute Engine에서 MySQL을 설정하는 여러 옵션에 관한 개요는 Compute Engine의 MySQL을 참고하세요. MySQL에 적합한 Compute Engine 제품을 알아보려면 Compute Engine에서 MySQL 구성을 참고하세요.
시작하기 전에
- Google Cloud 콘솔을 사용하여 Compute Engine API를 사용 설정합니다.
- Google Cloud CLI 설치
작업공간을 구성하여 명령을 간결하게 만듭니다. 다음 명령어에서 PROJECT_ID, REGION, ZONE을 프로젝트 값으로 바꿉니다. 영역의 전체 목록은 사용 가능한 리전 및 영역을 참조하세요.
gcloud config set project PROJECT_ID gcloud config set compute/region REGION gcloud config set compute/zone ZONE
Compute Engine 인스턴스 만들기 및 SSH 연결 설정
MySQL에 사용할 Compute Engine 인스턴스를 만들고 새로 생성된 인스턴스에 대한 SSH 연결을 설정합니다. 기본 운영체제는 Debian 버전 10입니다. 이 튜토리얼에 다른 운영체제를 사용하려면 Compute Engine 문서의 공개 이미지 페이지에 설명된 옵션 중에서 선택하면 됩니다.
콘솔
Compute Engine 인스턴스 만들기
Google Cloud console에서 Compute Engine 인스턴스를 만들려면 다음을 수행합니다.
Google Cloud 콘솔에서 Compute Engine VM 인스턴스 페이지로 이동합니다.
새로 생성된 프로젝트를 선택하고 계속을 클릭합니다.
인스턴스 만들기(기존 인스턴스가 있으면 새 인스턴스)를 클릭합니다. 인스턴스 이름을 mysql-test로 지정합니다.
기본값 이외의 다른 운영체제를 지정하려면 부팅 디스크 섹션에서 변경을 클릭하여 부팅 디스크의 속성을 구성합니다. 공개 이미지 탭에서 운영체제를 선택한 후 저장을 클릭합니다.
보안 권장사항을 준수하려면 외부 IP 주소를 사용하지 않고 인스턴스를 만듭니다.
고급 옵션을 펼치고 네트워킹을 펼칩니다. 네트워크 인터페이스에서 기본 인터페이스를 펼치고 외부 IPv4 주소 메뉴에서 없음을 선택합니다.
만들기를 클릭합니다.
네트워크 주소 변환 설정
Cloud NAT를 사용하여 네트워크 주소 변환을 설정하고 관리하려면 다음을 수행합니다.
Google Cloud 콘솔에서 Cloud NAT 페이지로 이동합니다.
시작하기 또는 Cloud NAT 게이트웨이 만들기를 클릭합니다.
게이트웨이 이름에
nat-simple-configuration
을 입력합니다.Cloud Router를 선택하려면 Cloud Router 선택 섹션에서 다음을 수행합니다.
- 네트워크에서 default를 선택합니다.
- 리전에서 VM에 지정한 리전을 선택합니다.
Cloud Router에서 새 라우터 만들기를 선택합니다.
라우터 만들기 대화상자가 표시되면 라우터의 이름(예:
nat-router-simple-configuration
)을 입력하고 만들기를 클릭합니다.
고급 구성을 클릭합니다.
Logging 섹션에서 변환 및 오류를 선택합니다. 이 설정은 모든 로그를 Cloud Logging으로 전송하도록 Cloud NAT를 구성합니다.
만들기를 클릭합니다.
클라이언트 VM에 SSH 연결 설정
SSH 연결을 설정하려면 다음을 수행합니다.
VM 인스턴스 페이지의 목록에서 새 VM 인스턴스를 찾습니다.
해당 VM의 연결 열에서 SSH를 클릭합니다. SSH 터미널이 브라우저 창에 열립니다.
gcloud
Compute Engine 인스턴스를 만들려면
gcloud compute instances create
명령어를 사용합니다. 운영체제를 지정하려면--image-family
매개변수를 이미지 계열 앞에 또는--image
매개변수를 특정 이미지의 이미지 이름 앞에 추가합니다. 예를 들어 Debian 10 계열의 최신 이미지를 사용하려면--image-family debian-10
을 추가합니다. 공개 이미지를 사용할 경우--image-project
매개변수를 사용하여 이미지 프로젝트를 제공해야 합니다.gcloud compute instances create \ --image-family debian-10 \ --image-project debian-cloud \ --no-address \ mysql-test
Cloud Router를 만듭니다.
gcloud compute routers create nat-router-simple-configuration \ --network=default
Cloud NAT를 사용하여 네트워크 주소 변환을 설정하고 관리합니다.
gcloud compute routers nats create nat-simple-configuration \ --router=nat-router-simple-configuration \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --enable-logging
ssh
를 사용하여 인스턴스에 연결합니다.gcloud compute ssh \ --tunnel-through-iap \ mysql-test
SSH 연결은 IAP(Identity-Aware Proxy)에서 처리되는 TCP 전달을 사용하여 설정됩니다.
MySQL 설치
다음 단계에서는 Compute Engine 인스턴스에 MySQL을 설치하는 방법을 설명합니다.
Debian 10 이상
이 안내에서는 MySQL 8 또는 5.7을 설치합니다.
Debian 버전 10 이상에서는 패키지 관리 시스템의 일부로 MySQL 대신 MariaDB가 포함됩니다. MariaDB는 MySQL 프로토콜과의 호환성을 유지하지만 독립적으로 진화하는 특성 세트가 있습니다. 자세한 내용은 MariaDB와 MySQL 비교를 참고하세요.
MySQL을 설치하려면 출시 패키지를 다운로드하고 dpkg
명령어를 사용하여 수동으로 설치합니다.
wget
종속 항목을 설치합니다.sudo apt-get install -y wget
MySQL Community Server 출시 패키지를 다운로드합니다.
export DEB_FILE=mysql-apt-config_0.8.20-1_all.deb cd /tmp curl -L --output ${DEB_FILE} \ https://dev.mysql.com/get/${DEB_FILE}
출시 패키지 파일의 무결성을 확인합니다.
cat > ${DEB_FILE}.md5 << EOL 799bb0aefb93d30564fa47fc5d089aeb ${DEB_FILE} EOL md5sum --check ${DEB_FILE}.md5
다음 출력이 표시되면 파일의 신뢰성 및 무결성이 확인된 것입니다.
mysql-apt-config_0.8.20-1_all.deb: OK
파일을 확인한 후 MySQL 패키지를 로컬 패키지 저장소에 추가합니다.
sudo dpkg -i ${DEB_FILE}
MySQL 버전을 포함한 설치 옵션을 확인하라는 메시지가 표시됩니다.
상단의 MySQL 서버 및 클러스터 메뉴 옵션을 선택한 상태에서 Return 키를 누른 후 화살표 키를 사용하여 서버 버전을 선택합니다.
이 가이드에서는 MySQL 8.0 또는 5.7을 선택해야 합니다. 버전을 ��택�� 후 키��������� Return 키를 누���니다.
구성 메뉴에서 선택한 옵션에 만족하면 화살표 키를 사용하여 메뉴에서
Ok
를 선택하고 키보드의 Return 키를 누릅니다.패키지 캐시를 업데이트합니다.
sudo apt-get update
공개 키를 사용할 수 없으므로 서명 NO_PUBKEY 467B942D3A79BD29를 확인할 수 없습니다와 비슷한 GPG 오류 메시지가 표시되면 다음 패턴을 따르는 명령어를 사용하여 누락된 GPG 키를 가져옵니다.
sudo apt-key adv \ --keyserver keyserver.ubuntu.com \ --recv-keys 467B942D3A79BD29
데모 오류 메시지에서 누락된 공개 키는
467B942D3A79BD29
이며--recv-keys
옵션과 함께 이 값을 제공합니다.패키지 캐시를 업데이트하려면 다음 명령어를 반복합니다.
MySQL을 설치합니다. 설치 과정에서 MySQL 서비스가 자동으로 시작됩니다.
sudo apt-get -y install mysql-community-server
루트 비밀번호와 같은 설치에 대한 세부정보를 제공하라는 메시지가 표시됩니다.
Debian 9
이 안내에서는 MySQL 8 또는 5.7을 설치합니다.
기본적으로 일부 Debian 버전(예: Debian 9)에서는 MariaDB를 기본 MySQL 서버로 설치합니다. MariaDB는 대부분 MySQL과 호환되며 같은 명령어로 호출될 수 있습니다. MariaDB와 표준 MySQL의 차이에 대한 자세한 내용은 MySQL에서 Debian 9의 MariaDB로 이동을 참조하세요.
MySQL을 설치하려면 다음 안내를 수행합니다.
MySQL Community Server 출시 패키지를 다운로드합니다.
export DEB_FILE=mysql-apt-config_0.8.17-1_all.deb cd /tmp curl -L --output ${DEB_FILE} \ https://dev.mysql.com/get/${DEB_FILE}
출시 패키지 파일의 무결성을 확인합니다.
cat > ${DEB_FILE}.md5 << EOL 9e393c991311ead61dcc8313aab8e230 ${DEB_FILE} EOL md5sum --check ${DEB_FILE}.md5
다음 출력이 표시되면 파일의 신뢰성 및 무결성이 확인된 것입니다.
mysql-apt-config_0.8.17-1_all.deb: OK
파일을 확인한 후 MySQL 패키지를 로컬 패키지 저장소에 추가합니다.
sudo dpkg -i ${DEB_FILE}
MySQL 버전을 포함한 설치 옵션을 확인하라는 메시지가 표시됩니다.
상단의 MySQL 서버 및 클러스터 메뉴 옵션을 선택한 상태에서 Return 키를 누른 후 화살표 키를 사용하여 서버 버전을 선택합니다.
이 가이드에서는 MySQL 8.0 또는 5.7을 선택해야 합니다. 버전을 선택한 후 키보드의 Return 키를 누릅니다.
구성 메뉴에서 선택한 옵션에 만족하면 화살표 키를 사용하여 메뉴에서
Ok
를 선택하고 키보드의 Return 키를 누릅니다.패키지 캐시를 업데이트합니다.
sudo apt-get update
공개 키를 사용할 수 없으므로 서명 NO_PUBKEY 467B942D3A79BD29를 확인할 수 없습니다와 비슷한 GPG 오류 메시지가 표시되면 다음 패턴을 따르는 명령어를 사용하여 누락된 GPG 키를 가져옵니다.
sudo apt-key adv \ --keyserver keyserver.ubuntu.com \ --recv-keys 467B942D3A79BD29
데모 오류 메시지에서 누락된 공개 키는
467B942D3A79BD29
이며--recv-keys
옵션과 함께 이 값을 제공합니다.패키지 캐시를 업데이트하려면 다음 명령어를 반복합니다.
MySQL을 설치합니다. 설치 과정에서 MySQL 서비스가 자동으로 시작됩니다.
sudo apt-get -y install mysql-community-server
Ubuntu
Ubuntu 1804 이하의 경우 이 안내에서는 MySQL 5.7을 설치합니다.
Ubuntu 2004 이상의 경우 이 안내에서는 MySQL 8을 설치합니다.
apt-get
패키지 관리자를 업데이트합니다.sudo apt-get update
MySQL을 설치합니다. 설치 과정에서 MySQL 서비스가 자동으로 시작됩니다.
sudo apt-get -y install mysql-server
기본적으로 Ubuntu 배포판에서 mysql은
auth_socket
플러그인을 사용하여root
사용자를 인증합니다. 이 쿼리를 실행하여 이 기본 구성을 확인합니다.echo "SELECT user, authentication_string, plugin, host FROM mysql.user WHERE user='root' ;" \ | sudo mysql -t -u root
출력���는
localhost
에서 연결하는root
사용자가auth_socket
플러그인을 사용하는 것으로 표시됩니다.+------+-----------------------+-------------+-----------+ | user | authentication_string | plugin | host | +------+-----------------------+-------------+-----------+ | root | | auth_socket | localhost | +------+-----------------------+-------------+-----------+
이 설정을 변경하고 루트 비밀번호를 추측하기 어려운 비밀번호로 변경합니다.
export PASSWORD=`uuidgen`; echo "Root password is : $PASSWORD" echo "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$PASSWORD'" \ | sudo mysql -u root
출력에 새 루트 비밀번호가 포함됩니다.
Root password is : 25fe2177-778a-414f-b80e-5fb8c8671de3
CentOS 또는 RHEL 7
이 안내에서는 MySQL 8을 설치합니다.
CentOS 및 RHEL의 버전 7에서는 패키지 관리 시스템의 일부로 MySQL 대신 MariaDB가 포함됩니다. MySQL을 설치하려면 먼저 패키지 관리자를 업데이트해야 합니다.
MySQL Community Server 출시 패키지를 다운로드합니다.
export RPM_FILE=mysql80-community-release-el7-4.noarch.rpm cd /tmp curl -L --output ${RPM_FILE} \ https://dev.mysql.com/get/${RPM_FILE}
출시 패키지 파일의 무결성을 확인합니다.
cat > ${RPM_FILE}.md5 << EOL 8b55d5fc443660fab90f9dc328a4d9ad ${RPM_FILE} EOL md5sum --check ${RPM_FILE}.md5
다음 출력이 표시되면 파일의 신뢰성 및 무결성이 확인된 것입니다.
mysql80-community-release-el7-4.noarch.rpm: OK
MySQL을 포함하도록 패키지 관리자를 업데이트합니다.
sudo rpm -Uvh ${RPM_FILE}
MySQL을 설치합니다.
sudo yum -y install mysql-community-server
MySQL 서버를 시작합니다.
sudo /usr/bin/systemctl start mysqld
서버 로그에서 임시 루트 비밀번호를 가져옵니다.
sudo cat /var/log/mysqld.log | grep -i 'temporary password'
Rocky Linux 또는 RHEL 8
이 안내에서는 MySQL 8을 설치합니다.
Rocky Linux, CentOS Stream, RHEL의 버전 8은 패키지 관리 시스템의 일부로 MySQL 대신 MariaDB를 포함합니다. MySQL을 설치하려면 먼저 패키지 관리자를 업데이트해야 합니다.
MySQL Community Server 출시 패키지를 다운로드합니다.
export RPM_FILE=mysql80-community-release-el8-2.noarch.rpm cd /tmp curl -L --output ${RPM_FILE} \ https://dev.mysql.com/get/${RPM_FILE}
출시 패키지 파일의 무결성을 확인합니다.
cat > ${RPM_FILE}.md5 << EOL 0ba3feb1c9ee35d30e5ae683accaf54b ${RPM_FILE} EOL md5sum --check ${RPM_FILE}.md5
다음 출력이 표시되면 파일의 신뢰성 및 무결성이 확인된 것입니다.
mysql80-community-release-el8-2.noarch.rpm: OK
MySQL을 포함하도록 패키지 관리자를 업데이트합니다.
sudo rpm -iUvh ${RPM_FILE}
MySQL을 설치합니다. 설치에서 커뮤니티 서버를 사용하도록 설치 중에 AppStream 저장소를 중지합니다.
sudo yum module disable -y mysql sudo yum install -y \ --disablerepo=appstream \ mysql-community-server
MySQL 서버를 시작합니다.
sudo /usr/bin/systemctl start mysqld
서버 로그에서 임시 루트 비밀번호를 가져옵니다.
sudo cat /var/log/mysqld.log | grep -i 'temporary password'
MySQL 설치 보안 강화
MySQL 설치 보안을 강화하려면 mysql_secure_installation
명령어를 실행합니다. 설치 과정 중에 비밀번호를 설정하지 않은 경우 이 단계에서 비밀번호를 만듭니다. 이 명령어에 대한 자세한 내용은 MySQL 문서에서 mysql_secure_installation 부분을 참조하세요.
sudo mysql_secure_installation
MySQL에 연결
다음 ���계에서는 mysql-test
인스턴스에서 MySQL에 연결하는 방법을 설명합니다.
MySQL 8.0
MySQL 클라이언트를 사용하여 MySQL에 연결합니다.
sudo mysql -u root -p
MySQL에 연결하면
mysql>
로 변경하라는 메시지가 표시됩니다.이제 MySQL 명령어를 실행할 수 있습니다. 예를 들어 다음 명령어는 실행 중인 스레드 및 현재 연결을 보여줍니다.
mysql> SHOW processlist;
+----+-----------------+-----------+------+---------+------+------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+-----------------+-----------+------+---------+------+------------------------+------------------+ | 5 | event_scheduler | localhost | NULL | Daemon | 1889 | Waiting on empty queue | NULL | | 14 | root | localhost | NULL | Query | 0 | init | show processlist | +----+-----------------+-----------+------+---------+------+------------------------+------------------+ 2 rows in set (0.00 sec)
다음 명령어를 사용하여 사용자 목록을 생성할 수 있습니다.
mysql> SELECT User, Host, authentication_string FROM mysql.user;
+------------------+-----------+------------------------------------------------------------------------+ | User | Host | authentication_string | +------------------+-----------+------------------------------------------------------------------------+ | mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | mysql.session | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | mysql.sys | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | root | localhost | $A$005$,BS{G+*#cVYxb6x40q0aFS5dp2/Kz6u2vennR5qe0eBKVA/6VW5B | +------------------+-----------+------------------------------------------------------------------------+ 4 rows in set (0.00 sec)
명령어 실행이 완료되었으면
exit
명령어를 사용하여 MySQL 클라이언트를 종료한 후exit
를 다시 사용하여 Compute Engine 인스턴스에서 로그아웃합니다.mysql> exit
Bye
MySQL 5.7
MySQL 클라이언트를 사용하여 MySQL에 연결합니다.
sudo mysql -u root -p
MySQL에 연결하면
mysql>
로 변경하라는 메시지가 표시됩니다.이제 MySQL 명령어를 실행할 수 있습니다. 예를 들어 다음 명령어는 실행 중인 스레드 및 현재 연결을 보여줍니다.
mysql> SHOW processlist;
+----+------+-----------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+-------+------------------+ | 51 | root | localhost | NULL | Query | 0 | NULL | show processlist | +----+------+-----------+------+---------+------+-------+------------------+ 1 row in set (0.00 sec)
다음 명령어를 사용하여 사용자 목록을 생성할 수 있습니다.
mysql> SELECT User, Host, authentication_string FROM mysql.user;
+---------------+-----------+-------------------------------------------+ | User | Host | authentication_string | +---------------+-----------+-------------------------------------------+ | root | localhost | *A047B05AAB007B33F8F2BD1FD404661D167D6348 | | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | +---------------+-----------+-------------------------------------------+ 3 rows in set (0.00 sec)
명령어 실행이 완료되었으면
exit
명령어를 사용하여 MySQL 클라이언트를 종료한 후exit
를 다시 사용하여 Compute Engine 인스턴스에서 로그아웃합니다.mysql> exit
Bye
다음 단계
- MySQL에 대한 자세한 내용은 공식 MySQL 문서를 참조하세요.
- MySQL을 사용하는 Cloud Marketplace의 다양한 개발 스택을 살펴보세요.
- 고가용성 및 확장성이 필요한 경우 다음 옵션을 고려하세요.
- 비공유 클러스터링 및 자동 샤딩을 통해 고가용성과 확장성을 제공하는 Compute Engine에 MySQL 클러스터를 설치합니다.
- Cloud Marketplace에서 클릭 한 번으로 간편하게 배포할 수 있는 Percona는 MySQL 클러스터링을 위한 오픈소스 솔루션입니다.
- 2011년부터 YouTube의 모든 데이터베이스 트래픽을 처리해 온 오픈소스 솔루션인 Vitess를 설치합니다. Vitess는 컨테이너에서 실행되는 애플리케이션에 적합합니다. 컨테이너화 환경에서 Vitess를 사용하는 방법에 대한 자세한 내용은 Kubernetes에서 Vitess 실행을 참고하세요.