作成した Compute Engine インスタンスに MySQL を手動でインストールするには、次の操作を行います。
Compute Engine で MySQL を設定する方法の概要については、Compute Engine での MySQL をご覧ください。MySQL に適した Compute Engine サービスについては、Compute Engine で MySQL を構成するをご覧ください。
始める前に
- Trusted 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 インスタンスを作成する
Trusted Cloud consoleで Compute Engine インスタンスを作成するには、次の操作を行います。
Trusted Cloud コンソールで、[Compute Engine VM インスタンス] ページに移動します。
新しく作成したプロジェクトを選択し、[続行] をクリックします。
[インスタンスを作成](既存のインスタンスがある場合は、[新しいインスタンス])をクリックします。インスタンスに mysql-test という名前を付けます。
デフォルト値以外のオペレーティング システムを指定するには、[ブートディスク] セクションで [変更] をクリックして、ブートディスクのプロパティを構成します。[公開イメージ] タブで、オペレーティング システムを選択し、[保存] をクリックします。
セキュリティのベスト プラクティスを遵守するには、外部 IP アドレスを使用せずにインスタンスを作成します。
[詳細オプション]、[ネットワーキング] の順に開きます。[ネットワーク インターフェース] から [デフォルト] インターフェースを開き、[外部 IPv4 アドレス] メニューで [なし] を選択します。
[作成] をクリックします。
ネットワーク アドレス変換を設定する
Cloud NAT でネットワーク アドレス変換を設定および管理するには、次の操作を行います。
Trusted Cloud コンソールで、[Cloud NAT] ページに移動します。
[開始] または [Cloud NAT ゲートウェイを作成] をクリックします。
[ゲートウェイ名] に「
nat-simple-configuration
」と入力します。Cloud Router を選択するには、[Cloud Router の選択] セクションで次の操作を行います。
- [ネットワーク] で [default] を選択します。
- [リージョン] で、VM に指定したリージョンを選択します。
[Cloud Router] で、[新しいルーターを作成] を選択します。
表示された [ルーターを作成] ダイアログで、ルーターの名前(例:
nat-router-simple-configuration
)を指定し、[作成] をクリックします。
[詳細構成] をクリックします。
[ロギング] セクションで、[変換とエラー] を選択します。この設定により、すべてのログが 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 接続は、Identity-Aware Proxy(IAP)によって処理される TCP 転送を使用して行われます。
MySQL のインストール
以降の手順では、Compute Engine インスタンス上に MySQL をインストールする方法について説明します。
Debian 10+
この手順では、MySQL 8 または 5.7 をインストールします。
バージョン 10 以降の Debian には、パッケージ管理システムの一部として 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 Server & Cluster] メニュー オプションを選択した状態で、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
インストールに必要な詳細情報(root のパスワードなど)を入力するように求められます。
Debian 9
この手順では、MySQL 8 または 5.7 をインストールします。
デフォルトでは、Debian のいくつかのバージョン(Debian 9 など)では、デフォルトの MySQL サーバーとして MariaDB がインストールされます。MariaDB は MySQL との幅広い互換性を実現するように設計されており、同じコマンドで起動できます。MariaDB と標準 MySQL の違いについては、Debian 9 での MySQL から 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 Server & Cluster] メニュー オプションを選択した状態で、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 | +------+-----------------------+-------------+-----------+
この設定を変更し、root パスワードを推測しにくいパスワードに変更します。
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 パスワードが含まれます。
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
サーバーログから一時的な root パスワードを取得します。
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
サーバーログから一時的な root パスワードを取得します。
sudo cat /var/log/mysqld.log | grep -i 'temporary password'
MySQL インストールのセキュリティの強化
MySQL インストールのセキュリティを強化するには、mysql_secure_installation
コマンドを実行します。インストール プロセス中にパスワードを設定しなかった場合は、この手順でパスワードを作成します。このコマンドの詳細については、mysql_secure_installation の MySQL ドキュメントをご覧ください。
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 Cluster をインストールして、シェアードナッシング クラスタリングと自動シャーディングによる高可用性とスケーラビリティを実現します。
- Cloud Marketplace から MySQL クラスタリング用のオープンソース ソリューションである Percona をデプロイします。
- 2011 年からすべての YouTube データベース トラフィックを供給しているオープンソース ソリューションである Vitess をインストールします。Vitess は、コンテナ内で動作するアプリケーションに最適です。コンテナ環境での Vitess の使用方法については、Kubernetes 上での Vitess の実行をご覧ください。