コーヒーが好きな木谷映見です。
本日 2022/12/14(水)、EC2 インスタンスの Amazon Linux2 に MySQL をインストールしようとしたら Nothing to do と言われてしまいました。
[ec2-user@ip-10-0-0-143 ~]$ sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm Loaded plugins: extras_suggestions, langpacks, priorities, update-motd Cannot open: https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm. Skipping. Error: Nothing to do [ec2-user@ip-10-0-0-143 ~]$
「何もすることがない」だなんて、そんな…
本記事では回避策を記載致します。
- 実行環境
- 回避策① wget コマンドで rpm パッケージを Amazon Linux2 のローカルにダウンロードして実行
- 回避策② 新しい MySQL GPG キーをインポートする
- 回避策③ MariaDB を使用する
- 調査情報
- 参考
- 協力
実行環境
シンプルに以下の構成で試しました。
- Amazon Linux 2 Kernel 5.10 AMI 2.0.20221103.3 x86_64 HVM gp2
- AMI ID:ami-072bfb8ae2c884cc4
回避策① wget コマンドで rpm パッケージを Amazon Linux2 のローカルにダウンロードして実行
wget
コマンドで rpm パッケージを Amazon Linux2 のローカルにダウンロードして実行します。
◆wget コマンドを使用して MySQL の RPM パッケージをダウンロードする
wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
◆ダウンロードされたか確認
ls -la
「mysql80-community-release-el7-7.noarch.rpm」が存在していれば OK です。
◆rpm パッケージをインストールする
sudo yum localinstall -y mysql80-community-release-el7-7.noarch.rpm
Complete! と表示されたら OK です。
ここまで実施できたら、サーバー機能やクライアント機能をお好みでインストールできます。今回はクライアント機能をインストールしてみます。
◆MySQL クライアント機能をインストールする
sudo yum install -y mysql-community-client
Complete! と表示されたら OK です。
◆バージョン確認
mysql --version
今回のコマンドでは Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package をダウンロードしていますので、
mysql Ver 8.0.31 for Linux on x86_64 (MySQL Community Server - GPL)
と表示されていいれば OK です。
回避策② 新しい MySQL GPG キーをインポートする
うまく MySQL がダウンロード・インストールできないのは、新しい GPG キーで署名されていることが原因のようです。
新しい MySQL GPG キーをインポートします。
◆新しい MySQL GPG キーをインポート
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
◆パッケージを更新する
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
◆MySQL クライアント機能をインストールする
sudo yum install -y mysql-community-client
Complete! と表示されたら OK です。
◆バージョン確認
mysql --version
今回のコマンドでは Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package をダウンロードしていますので、
mysql Ver 8.0.31 for Linux on x86_64 (MySQL Community Server - GPL)
と表示されていいれば OK です。
回避策③ MariaDB を使用する
Amazon Linux2 には MariaDB がインストール済みです。
MariaDB をインストールすると mysql_secure_installation
や mysql
コマンドも一緒に入るので、MySQL で実装したい一般的な機能を利用することが可能です。
もし RDS や Aurora に接続するため MySQL クライアント機能だけ使いたい、等の場合は、MySQL をインストールするのではなく、以下のように MariaDB をインストールして利用するとよいです。
◆MariaDB クライアント機能をインストールする
sudo yum install -y mariadb mariadb-client
Complete! と表示されたら OK です。
◆バージョン確認
mysql --version
今回 AMI は ami-072bfb8ae2c884cc4
を利用したのですが、バージョンは
mysql Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1
と表示されました。
◆Aurora MySQL 互換バージョンに接続してみる
試しに接続してみました。
エンドポイントをコピーしてと。
[ec2-user@ip-10-0-151-200 ~]$ mysql -h database-1.cluster-cno8jxqxarf4.ap-northeast-1.rds.amazonaws.com -P 3306 -u admin -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 69 Server version: 8.0.23 Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>
ログインできました!
調査情報
Nothing to do の状態からデバックログを見ると、Akamai から 403 エラーが返ってきているようです。
[ec2-user@ip-10-0-0-143 ~]$ sudo URLGRABBER_DEBUG=1 yum install https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm 2022-12-14 11:47:32,945 urlgrabber version = 3.10 2022-12-14 11:47:32,945 urlgrabber version = 3.10 : : : 2022-12-14 11:47:33,339 opening local file "/var/tmp/yum-root-JEznvr/mysql80-community-release-el7-5.noarch.rpm" with mode wb * Trying 23.206.10.112:443... * Connected to dev.mysql.com (23.206.10.112) port 443 (#8) * ALPN, offering h2 * ALPN, offering http/1.1 * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * successfully set certificate verify locations: * CAfile: /etc/pki/tls/certs/ca-bundle.crt * CApath: none * SSL connection using TLSv1.2 / ECDHE-ECDSA-AES256-GCM-SHA384 * ALPN, server accepted to use h2 * Server certificate: * subject: C=US; ST=California; L=Redwood City; O=Oracle Corporation; CN=www.mysql.com * start date: Jun 9 00:00:00 2022 GMT * expire date: Jun 11 23:59:59 2023 GMT * subjectAltName: host "dev.mysql.com" matched cert's "dev.mysql.com" * issuer: C=US; O=DigiCert Inc; CN=DigiCert TLS RSA SHA256 2020 CA1 * SSL certificate verify ok. * Using HTTP2, server supports multiplexing * Connection state changed (HTTP/2 confirmed) * Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0 * Using Stream ID: 1 (easy handle 0xe4d750) > GET /get/mysql80-community-release-el7-5.noarch.rpm HTTP/2 Host: dev.mysql.com user-agent: urlgrabber/3.10 yum/3.4.3 accept: */* < HTTP/2 403 < server: AkamaiNetStorage < content-length: 4520 < content-type: text/html < set-cookie: AK_NETWORKTYPE=ESSL; expires=Wed, 14-Dec-2022 11:49:33 GMT < etag: "46491460e504640b96a3f5e60da0945f:1434117667" < expires: Wed, 14 Dec 2022 11:47:33 GMT < cache-control: max-age=0, no-cache, no-store < pragma: no-cache < date: Wed, 14 Dec 2022 11:47:33 GMT 2022-12-14 11:47:33,378 header ended: * The requested URL returned error: 403 * stopped the pause stream! * Connection #8 to host dev.mysql.com left intact 2022-12-14 11:47:33,378 exception: [Errno 14] HTTPS Error 403 - Forbidden 2022-12-14 11:47:33,378 retrycode (14) not in list [-1, 2, 4, 5, 6, 7], re-raising Cannot open: https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm. Skipping. Error: Nothing to do [ec2-user@ip-10-0-0-143 ~]$
CDN からのエラーで rpm ファイルをダウンロードできず、yum コマンドは rpm を開けないまま何もせず終わる、という事象が発生している模様です。
参考
協力
本記事執筆に際し、酒井さん、熊谷(悠)さん、水本さん、千葉さん に調査ご協力いただきました。どうもありがとうございました。
emi kitani(執筆記事の一覧)
AS部LX課。2022/2入社、コーヒーとサウナが好きです。執筆活動に興味があります。AWS認定12冠。