Amazon Linux2 に MySQL をインストールしようとしたら Nothing to do となった

記事タイトルとURLをコピーする

コーヒーが好きな木谷映見です。

本日 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 ~]$

「何もすることがない」だなんて、そんな…
本記事では回避策を記載致します。

実行環境

シンプルに以下の構成で試しました。

  • 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 キーで署名されていることが原因のようです。

bugs.mysql.com

新しい 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_installationmysql コマンドも一緒に入るので、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 を開けないまま何もせず終わる、という事象が発生している模様です。

参考

dev.mysql.com

MySQL GPG keys expired, preventing installation/upgrade of MySQL packages from the official repository.

協力

本記事執筆に際し、酒井さん、熊谷(悠)さん水本さん千葉さん に調査ご協力いただきました。どうもありがとうございました。

emi kitani(執筆記事の一覧)

AS部LX課。2022/2入社、コーヒーとサウナが好きです。執筆活動に興味があります。AWS認定12冠。