CentOS7.9にMySQL8を入れる

`CentOS 7.9` に `mysql-community-server` を入れようとしたところ、いろいろ問題があり時間がかかったので作業内容を残しておきます。

- 環境

```
# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
```

- インストールしたmysqlのバージョン

```
# mysql -V
mysql  Ver 8.0.29 for Linux on x86_64 (MySQL Community Server - GPL)
```

## 作業ログ

### mysqlをインストールする

まずは普通にインストール

```
# yum localinstall http://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
# yum install mysql-community-server
```

するとパッケージが足りないと言われました
足りないもの↓

```
libcrypto.so.1.1()(64bit)
libcrypto.so.1.1(OPENSSL_1_1_0)(64bit)
libcrypto.so.1.1(OPENSSL_1_1_1)(64bit)
libc.so.6(GLIBC_2.25)(64bit)
libc.so.6(GLIBC_2.28)(64bit)
libncurses.so.6()(64bit)
libssl.so.1.1()(64bit)
libssl.so.1.1(OPENSSL_1_1_0)(64bit)
libssl.so.1.1(OPENSSL_1_1_1)(64bit)
libstdc++.so.6(CXXABI_1.3.11)(64bit)
libstdc++.so.6(CXXABI_1.3.8)(64bit)
libstdc++.so.6(CXXABI_1.3.9)(64bit)
libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
libstdc++.so.6(GLIBCXX_3.4.22)(64bit)
libtinfo.so.6()(64bit)
libtirpc.so.3()(64bit)
libtirpc.so.3(TIRPC_0.3.0)(64bit)
libtirpc.so.3(TIRPC_0.3.3)(64bit)
```

### 足りないパッケージの追加

調べてみると、OpenSSLのバージョンが古いのが原因らしい（調査内容については後述）

```
# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017
```

`yum list | grep openssl11` をしてもパッケージが見つからなかったのでepelリポジトリを追加

```
# yum install epel-release
```

すると `openssl11` が見つかったのでインストール

```
# yum list | grep openssl11
openssl11.x86_64                        1:1.1.1k-3.el7                 epel     
openssl11-devel.x86_64                  1:1.1.1k-3.el7                 epel     
openssl11-libs.x86_64                   1:1.1.1k-3.el7                 epel     
openssl11-static.x86_64                 1:1.1.1k-3.el7                 epel     
# yum install openssl11.x86_64
```

入りました

```
# openssl11 version
OpenSSL 1.1.1k  FIPS 25 Mar 2021 (Library: OpenSSL 1.1.1q  5 Jul 2022)
```

### GPG-KEYの追加

ここで一旦mysqlリトライ
するとgpg-keyのエラーが発生

```
# yum install mysql-community-server
（中略）
Total                                                                                      11 MB/s |  74 MB  00:00:07     
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022


GPG key retrieval failed: [Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022"
```

ファイルがないとのこと

```
# ls /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
ls: cannot access /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022: No such file or directory
```

GPG-KEYは期限が切れると無効化されるらしいので、新しいものを追加

```
# rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
```

### もう一度mysqlインストール

```
# yum install mysql-community-server
（中略）
Installed:
  mysql-community-server.x86_64 0:8.0.29-1.el7                                                                            

Dependency Installed:
  mysql-community-client.x86_64 0:8.0.29-1.el7            mysql-community-client-plugins.x86_64 0:8.0.29-1.el7           
  mysql-community-common.x86_64 0:8.0.29-1.el7            mysql-community-icu-data-files.x86_64 0:8.0.29-1.el7           
  mysql-community-libs.x86_64 0:8.0.29-1.el7             

Complete!
```

これでインストールができました。

```
# systemctl status mysqld.service 
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
```


## 学んだこと

最初に足りないと言われたパッケージ `libcrypto.so.1.1()(64bit)` を調べたところ、こちらのページが見つかりました。（後で調べなおしたためバージョンが新しくなっています）
https://rhel.pkgs.org/7/epel-x86_64/openssl11-libs-1.1.1k-4.el7.x86_64.rpm.html

こちらの `Repository` の欄が `EPEL x86_64` となっていたため、epelリポジトリを登録してopenssl11をインストールするという手順にたどり着くことができました。

足りないパッケージがあった場合は https://pkgs.org/ で検索して自分の環境に合ったものを探す、ということが理解できたのは汎用性の高い学びだったと思います。