はじめに
AWSのEC2 インスタンスに MySQL 8.0 をインストールしようとしたところ、
以下のエラーで失敗しました。
sudo dnf -y install mysql mysql-community-server
一致した引数がありません: mysql(No match for argument: mysql)
環境
| 項目 | 内容 |
|---|---|
| OS | Amazon Linux 2023 |
| インスタンスタイプ | t3.micro |
| インストール対象 | MySQL 8.0 (mysql-community-server) |
| 接続環境 | AWS CloudShell から接続 |
原因
Amazon Linux 2023 でよく起きます。
AL2023 の標準リポジトリには MySQL が含まれていない(代わりに MariaDB が入っている)
OSを確認
less /etc/os-release
## Amazon Linux 2023の表示あり
解決方法
MySQL8.0をインストールする場合
1. MySQLリポジトリを追加
AL2023はRHEL/Fedora 9系ベースなので el9 を使用する
sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
2. GPGキーをインポート
このまま再度インストールを実行しても、GPGのエラーが発生します
sudo dnf -y install mysql mysql-community-server
## (一部省略)
鍵のインポートに成功しました
鍵をインポートしても役に立ちませんでした。鍵が間違っていませんか?
mysql-community-client-8.0.46-1.el9.x86_64.rpm の公開鍵がインストールされていません. 失敗したパッケージは: mysql-community-client-8.0.46-1.el9.x86_64
GPG 鍵が設定されています: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
mysql-community-client-plugins-8.0.46-1.el9.x86_64.rpm の公開鍵がインストールされていません. 失敗したパッケージは: mysql-community-client-plugins-8.0.46-1.el9.x86_64
GPG 鍵が設定されています: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
mysql-community-common-8.0.46-1.el9.x86_64.rpm の公開鍵がインストールされていません. 失敗したパッケージは: mysql-community-common-8.0.46-1.el9.x86_64
GPG 鍵が設定されています: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
mysql-community-libs-8.0.46-1.el9.x86_64.rpm の公開鍵がインストールされていません. 失敗したパッケージは: mysql-community-libs-8.0.46-1.el9.x86_64
GPG 鍵が設定されています: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
ダウンロード済みのパッケージは、次の正常なトランザクションまでキャッシュに保存されました。
'dnf clean packages' を実行することでキャッシュパッケージを削除できます。
エラー: GPG の確認に失敗しました。
リポジトリが参照している鍵が 2022年版 ですが、MySQLは鍵を2023年版に更新しています。
だから 「鍵をインポートしても役に立ちませんでした」というエラーになります。
(古い鍵では新しいパッケージの署名を検証できないため)
以下のコマンドを実行してパッケージを更新します。
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
## ダウンロード済みパッケージをキャッシュから削除
sudo dnf clean packages
3. 再インストール
これでリポジトリにパッケージがあるのでインストールが成功します。
sudo dnf -y install mysql mysql-community-server
補足
- 起動と自動起動設定
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo systemctl status mysqld
- 初期パスワードの確認
## MySQL 8.0 は初回起動時にrootの仮パスワードを自動生成される
sudo grep 'temporary password' /var/log/mysqld.log
## その後セキュア設定
sudo mysql_secure_installation
まとめ
Amazon Linux 2023 で MySQL をインストールする際は、以下の2つのつまずきポイントがありました。
-
AL2023 の標準リポジトリに MySQL は含まれていない(代わりに MariaDB が入っている)
→ MySQL 公式リポジトリを追加する必要がある -
追加した公式リポジトリが古いGPG鍵(2022年版)を参照している
→ 最新の鍵(2023年版)をインポートして解決
参考