このトピックでは、オンプレミスのリポジトリとAlibaba Cloudイメージソースを使用して、Linux Elastic Compute Service (ECS) インスタンスにMySQLデータベースをデプロイする方法について説明します。 このトピックでは、MySQLデータベースに接続する方法についても説明します。 これにより、効率的かつ安全な方法でデータベースを管理およびアクセスできます。
手動デプロイ方法for MySQL
課金方法 | メリット | デメリット | シナリオ |
|
|
| |
|
|
|
MySQLのデプロイ
Alibaba Cloud Linux 3およびCentOS
オンプレミスリポジトリを使用したMySQLデータベースのデプロイ
Yellowdog Updater Modified (YUM) やAdvanced Packaging Tool (APT) などのオンプレミスリポジトリを使用してソフトウェアをインストールする場合、ソフトウェアのバージョンが最新バージョンではない可能性があることに注意してください。 MySQLの最新バージョンまたは特定のバージョンのMySQLをインストールする方法については、このトピックの「Alibaba Cloudイメージソースを使用してMySQLデータベースをデプロイする」をご参照ください。
Alibaba Cloud Linux 3、CentOS 8.x、Ubuntu、およびDebianのみがこのデプロイ方法をサポートしています。
Ubuntu 18.0以前を実行するインスタンスの場合、デフォルトのMySQLバージョンは5.7.42です。 特定のMySQLバージョンをインストールする方法については、このトピックの「Alibaba Cloudイメージソースを使用してMySQLデータベースをデプロイする」をご参照ください。
Linux ECSインスタンスに接続します。 詳細については、「Workbenchを使用したSSH経由のLinuxインスタンスへの接続」をご参照ください。
次のコマンドを実行して、YUMリポジトリを更新します。
sudo yum update
次のコマンドを実行して、MySQLインストールパッケージがオンプレミスリポジトリに存在するかどうかを確認します。
sudo yum search mysql-server
次のメッセージが表示された場合、MySQLインストールパッケージはオンプレミスリポジトリで利用可能です。
次のコマンドを実行してMySQLサーバーをインストールします。
sudo yum install mysql-server
次のコマンドを実行してMySQLを起動します。
sudo systemctl start mysqld
次のコマンドを実行して、インスタンスの起動時にMySQLを起動します。
sudo systemctl enable mysqld
次のコマンドを実行して、MySQLステータスを表示します。 activeフィールドでActive (running) が返された場合、MySQLは期待どおりに開始されます。 一般的なMySQLサービスの状態については、一般的なMySQLサービスの状態は何ですか? 「MySQLデプロイに関するFAQ」トピックのセクション。
sudo systemctl status mysqld
MySQLサービスの開始後、MySQLサービスのセキュリティ機能を設定します。 詳細については、このトピックの「MySQLセキュリティ設定」をご参照ください。
Alibaba Cloudイメージソースを使用したMySQLデータベースのデプロイ
Linux ECSインスタンスに接続します。 詳細については、「Workbenchを使用したSSH経由のLinuxインスタンスへの接続」をご参照ください。
(オプション) Alibaba Cloud Linux 3を実行しているECSインスタンスで、次のコマンドを実行し、MySQLに必要なパッケージをインストールします。
sudo rpm -Uvh https://mirrors.aliyun.com/alinux/3/updates/x86_64/Packages/compat-openssl10-1.0.2o-4.0.1.al8.x86_64.rpm
ビジネス要件に基づいてMySQLバージョンを選択し、RPMパッケージマネージャー (RPM) パッケージをインストールできます。 次のコマンドを実行して、MySQL Community Editionへの更新に使用するRPMパッケージをインストールします。 ビジネス要件に基づいて、MySQL YUMリポジトリでバージョンを選択します。
sudo rpm -Uvh [URL of the RPM package corresponding to the MySQL version that you want to install]
インストールするMySQLバージョンに対応するRPMパッケージのURLを実際のURLに置き換えます。 たとえば、次のURLを指定して、MySQL 8.4を含むRPMパッケージを取得します。
sudo rpm -Uvh https://dev.mysql.com/get/mysql84-community-release-el8-1.noarch.rpm
説明RPMパッケージのURLの
mysql84-community-release-el7-1
は、MySQLのバージョンを指定します。 次のセクションでは、バージョンについて説明します。el7: Red Hat Enterprise Linux (RHEL) 7、またはAlibaba Cloud Linux 2やCentOS 7などの互換性のあるオペレーティングシステムバージョンを指定します。
el8: RHEL 8、またはAlibaba Cloud Linux 3、CentOS 8、AlmaLinux 8、Rocky Linux 8などの互換性のあるオペレーティングシステムバージョンを指定します。
el9: RHEL 9、またはCentOS Stream 9やRHEL 9ディストリビューションなどの互換性のあるオペレーティングシステムのバージョンを指定します。
インストール中の依存関係の問題やバージョンの非互換性エラーを防ぐために、選択したリポジトリ構成がオペレーティングシステムのバージョンと一致していることを確認してください。 オペレーティングシステムのバージョンを表示するには、
cat /etc/os-release
コマンドを実行します。次のコマンドを実行して、MySQL関連のリポジトリが追加されているかどうかを確認します。
sudo yum repolist enabled | grep mysql
次のコマンド出力が返されると、MySQLインストールパッケージを含むYUMリポジトリが期待どおりに追加されます。
次のコマンドを実行して、選択したMySQLバージョンをインストールします。 <MySQL version> を実際のバージョン番号に置き換えます。
sudo yum -y install mysql-community-server --enablerepo=mysql[MySQL version]-community --nogpgcheck
この例では、MySQL 8.4が使用されます。 次のコマンドを実行してMySQL 8.4をインストールします。
sudo yum -y install mysql-community-server --enablerepo=mysql-8.4-lts-community --nogpgcheck
次のコマンドを実行して、MySQLのバージョンを確認します。
mysql -V
次のコマンド出力は、MySQLがインストールされていることを示します。
mysql Ver 8.4.3 for Linux on x86_64 (MySQL Community Server - GPL)
次のコマンドを実行してMySQLを起動します。
sudo systemctl start mysqld
次のコマンドを実行して、インスタンスの起動時にMySQLを起動します。
sudo systemctl enable mysqld
MySQLのステータスを表示します。
次のコマンドを実行して、MySQLステータスを確認します。 activeフィールドでActive (running) が返された場合、MySQLは期待どおりに開始されます。 一般的なMySQLサービスの状態については、一般的なMySQLサービスの状態は何ですか? 「MySQLデプロイに関するFAQ」トピックのセクション。
sudo systemctl status mysqld
UbuntuとDebian
オンプレミスリポジトリを使用したMySQLデータベースのデプロイ
Linux ECSインスタンスに接続します。 詳細については、「Workbenchを使用したSSH経由のLinuxインスタンスへの接続」をご参照ください。
次のコマンドを実行して、APTリポジトリを更新します。
sudo apt update sudo apt upgrade
次のコマンドを実行して、MySQLインストールパッケージがオンプレミスリポジトリに存在するかどうかを確認します。
sudo apt search mysql-server
次のコマンド出力が返された場合、MySQLインストールパッケージはオンプレミスリポジトリに存在します。
コマンド出力に
mysql-server
という名前のパッケージが含まれていない場合、現在のインスタンスのリポジトリにはMySQLインストールパッケージが含まれていません。 MySQLをデプロイするには、このトピックの「Alibaba Cloudイメージソースを使用してMySQLデータベースをデプロイする」セクションで説明されている手順に従います。次のいずれかのコマンドを実行して、オペレーティングシステムに基づいてMySQLサーバーをインストールします。
Ubuntu
sudo apt install mysql-server
Debian
説明DebianのデフォルトのAPTリポジトリには、MySQL Community Editionのインストールパッケージは含まれていません。 Debianでは、デフォルトのデータベース管理システムとしてMySQLの代わりにMariaDBが使用されます。 MariaDBは、元のMySQL開発者によって作成され、オープンソースを維持するように設計されたMySQLのブランチです。
MySQL Community Editionの取得方法については、このトピックの「Alibaba Cloudイメージソースを使用してMySQLデータベースをデプロイする」をご参照ください。
sudo apt install default-mysql-server
MySQLをインストールした後、次のコマンドを実行してMySQLを起動します。
sudo systemctl start mysql
次のコマンドを実行して、インスタンスの起動時にMySQLを起動します。
sudo systemctl enable mysql
次のコマンドを実行して、MySQLステータスを表示し、MySQLが起動しているかどうかを確認します。
sudo systemctl status mysql
activeフィールドでActive (running) が返された場合、MySQLは期待どおりに開始されます。 一般的なMySQLサービスの状態については、一般的なMySQLサービスの状態は何ですか? 「MySQLデプロイに関するFAQ」トピックのセクション。
UbuntuおよびDebianオペレーティングシステムでは、MySQLはデフォルトで
auth_socket
プラグインを使用してルートユーザーを認証します。 詳細については、「」をご参照ください。auth_socket lug-inとは何ですか? 「MySQLデプロイに関するFAQ」トピックのセクション。MySQLセキュリティポリシーを設定します。 詳細については、このトピックの「MySQLセキュリティ設定」をご参照ください。
次のコマンドを実行して、rootユーザーとしてMySQLにログインします。
sudo mysql
次のコマンドを実行してユーザーを作成し、パスワードを指定します。 この例では、ユーザー名が
mysql_test
のユーザーを作成し、ローカルアクセスのみを許可してから、パスワードを8uhb ^ YJm
に設定します。 コマンドのユーザー名、ホスト制限、およびパスワードを、ビジネスシナリオに基づいた実際の値に置き換えます。説明localhost
は、データベースサーバーが存在するホストからのみ接続できることを指定します。 メカニズムは、MySQLがUnixソケット接続としてlocalhost
を使用することです。 外部ホストからの接続を許可する場合は、localhost
を外部ホストのIPアドレスまたはホスト名に置き換えるか、%
ワイルドカード文字を使用してホストを示します。CREATE USER 'mysql_test'@'localhost' IDENTIFIED BY '8uhb^YJm';
次のコマンドを実行して、新しいユーザーに特定のデータベースに対する完全な権限を付与します。 この例では、
mysql_test
ユーザーに、example_db
データベース内のすべてのテーブルに対する管理権限が付与されます。GRANT ALL PRIVILEGES ON example_db.* TO 'mysql_test'@'localhost';
権限を
すべての特権
に設定すると、特に本番環境でリスクが発生する可能性があります。 ビジネス要件に基づいて、最低限必要な権限のみを付与することを推奨します。 たとえば、ユーザーにデータの読み取りを許可するには、SELECT
権限のみを付与します。GRANT SELECT ON example_db.* TO 'mysql_test'@'localhost';
次のコマンドを実行して、MySQLの権限テーブルを更新し、新しい権限がすぐに有効になるようにします。
FLUSH PRIVILEGES;
Alibaba Cloudイメージソースを使用したMySQLデータベースのデプロイ
次のコマンドを実行してシステムAPTリポジトリを更新し、システムパッケージリストが最新であることを確認します。
sudo apt update sudo apt upgrade
公式のMySQL APTリポジトリを追加するには、MySQL APTリポジトリページに移動し、お使いのUbuntuバージョンに適したMySQL APT設定パッケージのURLを取得します。 次のコマンドを実行して、対応するバージョンのAPT構成パッケージをダウンロードします。
sudo wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
dpkg
コマンドを実行して、ダウンロードしたMySQL APT構成パッケージをインストールします。sudo dpkg -i mysql-apt-config_0.8.33-1_all.deb
システムはインストール中に設定オプションを要求します。
(オプション)
mysql-apt-config
スクリプトで、お使いのオペレーティングシステムが公式バージョンでないことが検出された場合、次の情報が表示されます。 オペレーティングシステムのバージョンに最も似たオプションを選択して、インストールを続行できます。 この例では、最新のubuntuバージョンであるUbuntu jammy
を選択します。 システムエイリアスを取得する方法については、UbuntuまたはDebianインスタンスのシステムエイリアスを取得するにはどうすればよいですか? 「MySQLデプロイに関するFAQ」トピックのセクション。設定ページには、MySQLサーバー、クライアント、ツールコンポーネントなど、インストールする必要があるすべてのコンポーネントが一覧表示されます。 インストールするバージョンとコンポーネントを確認し、下矢印キーを押して
OK
に切り替え、Enterキーを押します。
次のコマンドを実行して、パッケージリストを再更新し、追加されたMySQLリポジトリを有効にします。
sudo apt update
apt-get
またはapt
コマンドを実行してMySQLサーバーをインストールします。sudo apt install mysql-server
インストールが完了したら、次のコマンドを実行してMySQLを起動し、MySQLステータスを表示します。
sudo systemctl start mysql sudo systemctl status mysql
一般的なMySQLサービスの状態については、MySQLサービスの一般的なステータスは何ですか? 「MySQLデプロイに関するFAQ」トピックのセクション。
次のコマンドを実行して、インスタンスの起動時にMySQLを起動します。
sudo systemctl enable mysql
MySQLセキュリティ設定
Alibaba Cloud Linux3およびCentOS
次のコマンドを実行して、rootユーザーの一時パスワードを取得します。
sudo grep 'temporary password' /var/log/mysqld.log
次のコマンド出力は、rootユーザーの初期パスワードが
1qt1lb-jQ1I6
であることを示しています。2024-12-17T02:05:43.885354Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 1qt1lb-jQ1I6
次のコマンドを実行して、MySQLセキュリティ設定を設定します。
sudo mysql_secure_installation
ステップ1で取得したrootユーザーの初期パスワードを入力します。
説明パスワードを入力すると、パスワード文字は非表示になります。 入力したパスワードが正しいことを確認してください。
yを入力して匿名ユーザーを削除します。
これにより、権限のないユーザーが有効な資格情報を入力する手順をスキップしてMySQLサーバーにアクセスするのを防ぎます。
root
ユーザーがMySQLサーバーに接続することを禁止するかどうかを示すメッセージが表示されます。 セキュリティ上の理由から、root
ユーザーがMySQLサーバーに接続することを禁止することを推奨します。リモートルートユーザーログオンを無効にするには、
y
またはY
を押します。制御された環境での管理など、特定のシナリオで
root
ユーザーがMySQLサーバーに接続できるようにする場合は、Y
以外のキーを押してリモートrootユーザーのログオンを許可します。 また、SSHやVPNを使用するなど、セキュリティを強化するための他の対策を講じる必要があります。
yを入力して、MySQLサーバーに付属の
テスト
データベースを削除します。デフォルトでは、どのユーザーも
test
データベースにアクセスできます。 システムのセキュリティを向上させ、効率的な管理を容易にするために、デフォルトのテストデータベースを削除することを推奨します。yを入力して権限テーブルをリロードし、前述の変更を有効にします。
UbuntuとDebian
次のコマンドを実行して、MySQLセキュリティ設定を設定します。
sudo mysql_secure_installation
VALIDATE PASSWORD
コンポーネントを設定します。このコンポーネントは、パスワードの強度を確認するために使用され、データベースのセキュリティを向上させます。 このコンポーネントを有効にするかどうかは、セキュリティ要件と使用環境に基づいて決定できます。
y
またはY
を入力してコンポーネントを有効にするか、別のキーを押してこの手順をスキップできます。 VALIDATE PASSWORDコンポーネントを有効にしたら、次の手順に進みます。VALIDATE PASSWORD
コンポーネントを有効にした後、セキュリティ要件に基づいてパスワードの複雑さレベル (強度) も指定する必要があります。説明パスワードの複雑さのレベル
低い:
要件: パスワードは8文字以上である必要があります。
シナリオ: パスワードの複雑さが低い環境。
ミディアム:
要件: パスワードは8文字以上で、数字、大文字と小文字、および特殊文字を使用する必要があります。
シナリオ: ほとんどの本番環境。 中レベルは、パスワード設定と管理のバランスを提供します。
強い (高い):
要件: パスワードは8文字以上で、数字、大文字と小文字、および特殊文字を使用する必要があります。 システムは、一般的な単語が使用されないように、パスワードを違反コーパスと照合します。
シナリオ: 高いセキュリティを必要とする環境。
パスワードの複雑さレベルを指定した後、指定した複雑さレベルに対応するパスワード要件に基づいてパスワードを指定できます。 隠しモードでパスワードを入力し、入力する2つのパスワードは同じでなければなりません。
パスワードが指定されると、システムは推定パスワード強度値を返します。 この例では、推定パスワード強度は
100
です。これは、指定したパスワードの複雑さレベルに対応するパスワード要件に基づいて、入力したパスワードが強いと見なされることを示しています。パスワードがセキュリティポリシーと一致するかどうかを確認するように求められます。 このメッセージは、正しいパスワードを入力したこと、またはパスワードが選択したパスワードの複雑さのレベルと一致していることを確認します。 パスワードがビジネス要件を満たしている場合は、
Y
を入力します。パスワードがビジネス要件を満たしていない場合、またはパスワードを変更する場合は、n
と入力します。yまたはYを入力して匿名ユーザーを削除します。
これにより、権限のないユーザーが有効な資格情報を入力する手順をスキップしてMySQLサーバーにアクセスするのを防ぎます。
root
ユーザーがMySQLサーバーに接続することを禁止するかどうかを指定するように求められます。 セキュリティ上の理由から、root
ユーザーがMySQLサーバーに接続することを禁止することを推奨します。リモートルートユーザーログオンを無効にするには、
y
またはY
を入力します。制御された環境での管理など、特定のシナリオで
root
ユーザーがMySQLサーバーに接続できるようにする場合は、Y
とy以外のキーを押してリモートrootユーザーのログオンを許可します。 また、SSHやVPNを使用するなど、セキュリティを強化するための他の対策を講じる必要があります。
yを入力して、MySQLサーバーに付属の
テスト
データベースを削除します。デフォルトでは、どのユーザーも
test
データベースにアクセスできます。 システムのセキュリティを向上させ、効率的な管理を容易にするために、デフォルトのテストデータベースを削除することを推奨します。yまたはYを入力して権限テーブルをリロードし、前述の変更を有効にします。
MySQLデータベースへの接続
MySQL Client
または他のデータベース管理ツールを使用して、別のマシンまたはネットワークからMySQLサーバーに接続できます。
データベース管理ツール: Alibaba Cloud Data management (DMS) を使用してMySQLデータベースにアクセスすることを推奨します。 詳細については、「Alibaba Cloudデータベースインスタンスの登録」をご参照ください。 MySQLクライアントを使用してMySQLデータベースに接続し、テストを実行することもできます。 MySQLクライアントは、MySQL WorkbenchまたはNavicatです。
MySQLクライアント接続: MySQLクライアントを使用してMySQLデータベースに接続するには、次の手順を実行します。
説明リモートIPアドレスからデータベースに安全にアクセスするには、root以外のアカウントを使用してMySQLデータベースに接続することをお勧めします。 次の例は、MySQLへのリモートログオン用にMySQLアカウントを作成する方法を示しています。
Linux ECSインスタンスに接続します。
詳細については、「Workbenchを使用したSSH経由のLinuxインスタンスへの接続」をご参照ください。
インスタンスが属するセキュリティグループにセキュリティグループルールを追加します。 デフォルトでは、MySQLはポート
3306
を使用します。 インバウンドセキュリティグループルールでポート3306
を開きます。 別のMySQLポートを使用する場合は、インバウンドセキュリティグループルールでポート3306を実際のポート番号に置き換えます。 詳細については、「セキュリティグループルールの追加」をご参照ください。次のコマンドを実行し、rootユーザーのパスワードを入力してMySQLデータベースにログインします。 rootユーザーのパスワードは、このトピックのMySQLセキュリティ設定セクションで設定したパスワードです。
sudo mysql -uroot -p
別のユーザーを作成するか、既存のユーザーの権限を変更します。
説明次のサンプルSQL文では、次のパラメーターに注意してください。
<username>
は、MySQLデータベースへの接続に使用するユーザー名を指定します。<password>
は、MySQLデータベースへの接続に使用するパスワードを指定します。%
はワイルドカード文字として使用され、外部ホストからMySQLへの接続を許可します。
次のコマンドを実行してユーザーを作成します。
-- Create a user. CREATE USER '<username>'@'%' IDENTIFIED BY '<password>';
次のコマンドを実行して、既存のユーザーのアクセス権限を変更します。
ALTER USER '<username>'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>'; UPDATE mysql.user SET Host='%' WHERE User='<username>' AND Host='localhost';
次のコマンドを実行して、ユーザーにMySQLデータベースへのアクセスを許可します。
GRANT ALL PRIVILEGES ON database_name.* TO '<username>'@'%';
次のコマンドを実行して、前述の変更を有効にするための権限を更新します。
FLUSH PRIVILEGES;
exit
を入力してMySQLデータベースを終了します。 次のコマンドを実行して、設定されたユーザー名とパスワードが有効かどうかを確認します。mysql -u <username> -p -h <server_ip_address> -P 3306
<server_ip_address>
は、MySQLサーバーのIPアドレスを指定します。-P
はポート番号を指定します。 デフォルトのポート番号は、3306 です。