経緯
AWSのプライベートサブネットにあるRDSをパブリックサブネットにあるEC2サーバを踏み台にしてアクセスしたかったので、EC2サーバにMysqlクライアントをインストールしたらGPGキーのエラーが発生してしまった。
以前までは同様のエラーが発生しないでインストールできていたので備忘録として残してみた。
検証環境
OS:Amazon-Linux2
DB:Mysql8.0
事象を発生させる
Mysql8.0のリポジトリを追加する
yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
Installed:
mysql80-community-release.noarch 0:el7-3
Complete!
Mysql5.7のリポジトリを無効化にして、Mysql8.0のリポジトリを有効化させる
yum-config-manager --disable mysql57-community
enabled = False
yum-config-manager --enable mysql80-community
enabled = True
Mysqlクライアントをインストールしてエラー発生
yum install -y mysql-community-client
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
Importing GPG key 0x5072E1F5:
Userid : "MySQL Release Engineering <mysql-build@oss.oracle.com>"
Fingerprint: a4a9 4068 76fc bd3c 4567 70c8 8c71 8d3b 5072 e1f5
Package : mysql80-community-release-el7-3.noarch (installed)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
Public key for mysql-community-client-8.0.28-1.el7.x86_64.rpm is not installed
Failing package is: mysql-community-client-8.0.28-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
mysqlコマンドを実行してもコマンドは存在しない
mysql --version
-bash: mysql: command not found
which mysql
/usr/bin/which: no mysql in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
解決方法
原因としては、RPMやyumではパッケージの改ざんを検証するためにGPGキーを使っているのですが、そのGPGキーが有効期限が切れており、GPGキーが存在していない状態になっていました。
GPGキーを再度インストールする必要があります。
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
再度実行した
yum install -y mysql-community-client
Installed:
mysql-community-client.x86_64 0:8.0.28-1.el7
Dependency Installed:
ncurses-compat-libs.x86_64 0:6.0-8.20170212.amzn2.1.3
Complete!
無事に成功!おめでとうございます!
参考
・MySQL Yumリポジトリを使用するためのクイックガイド - MySQL公式ドキュメントから
・MySQL8.0.28での変更
(どうやら2022年1月18日のアップデートで変更されたみたいですね…)