公式サイトを見ながらMySQL8.0をyumでインストール

# 英語はこわい

MySQLを5.6から5.7にアップグレードするときには、下記のサイトを見ながらやってました。
[▼MySQL5.1から5.7にバージョンアップさせるための手順](https://qiita.com/tachitechi/items/b59278a16f636651410f)
[▼CentOSでMySQLをバージョンアップさせる方法](https://keikenchi.com/centos-mysql-var-up)

日本語だとすぐ理解できるし、楽だし。
しかし今回はリリースされてすぐのバージョンにアップグレードするので、
公式サイトを見ようと思うに至りました。

# 実際にインストールして常時起動設定まで

さっきのサイトも参考にしつつ、メインは[公式サイト](https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/)を見るといった形で進めます。

## ミスを記録に残しつつ

ここからは打ったコマンドの半分近くがエラーを起こすものになってます。
（タイプミス含む）

つまるところ、[公式サイト](https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/)を見てください。
この投稿はきっとあなたをイライラさせます。

## 現在使っているMySQLを消す

まず以下のコマンドは全て上手くいってません。

```shell-session
[exia@localhost ~]$ yum remove mysql-community-release.noarch
読み込んだプラグイン:fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
このコマンドを実行するには root である必要があります。
[exia@localhost ~]$ sudo yum remove mysql-community-release.noarch
[sudo] password for exia:
読み込んだプラグイン:fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
引数に一致しません: mysql-community-release.noarch
削除対象とマークされたパッケージはありません。
[exia@localhost ~]$ yum list | grep "^mysql-.*server"
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
mysql-community-server.x86_64  5.7.21-1.el7  @mysql57-community
```

その前に、MySQLをストップします。

```shell-session
[exia@localhost ~]$ sudo service mysqld stop
Redirecting to /bin/systemctl stop  mysqld.service
```

ようやく下記で削除できました。

```shell-session
[exia@localhost ~]$ sudo yum remove mysql*
読み込んだプラグイン:fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mysql-community-client.x86_64 0:5.7.21-1.el7 を 削除
---> パッケージ mysql-community-common.x86_64 0:5.7.21-1.el7 を 削除
---> パッケージ mysql-community-devel.x86_64 0:5.7.21-1.el7 を 削除
---> パッケージ mysql-community-libs.x86_64 0:5.7.21-1.el7 を 削除
---> パッケージ mysql-community-server.x86_64 0:5.7.21-1.el7 を 削除
---> パッケージ mysql-connector-python.x86_64 0:2.1.7-1.el7 を 削除
---> パッケージ mysql-utilities.noarch 0:1.6.5-1.el7 を 削除
---> パッケージ mysql57-community-release.noarch 0:el7-7 を 削除
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                  アーキテクチャー
                                 バージョン   リポジトリー                 容量
================================================================================
削除中:
 mysql-community-client   x86_64 5.7.21-1.el7 @mysql57-community          106 M
 mysql-community-common   x86_64 5.7.21-1.el7 @mysql57-community          2.5 M
 mysql-community-devel    x86_64 5.7.21-1.el7 @mysql57-community           21 M
 mysql-community-libs     x86_64 5.7.21-1.el7 @mysql57-community          9.4 M
 mysql-community-server   x86_64 5.7.21-1.el7 @mysql57-community          740 M
 mysql-connector-python   x86_64 2.1.7-1.el7  @mysql-connectors-community 1.1 M
 mysql-utilities          noarch 1.6.5-1.el7  @mysql-tools-community      3.5 M
 mysql57-community-release
                          noarch el7-7        installed                   7.8 k

トランザクションの要約
================================================================================
削除  8 パッケージ

インストール容量: 884 M
上記の処理を行います。よろしいでしょうか？ [y/N]y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  削除中                  : mysql-utilities-1.6.5-1.el7.noarch              1/8
  削除中                  : mysql-community-devel-5.7.21-1.el7.x86_64       2/8
  削除中                  : mysql-connector-python-2.1.7-1.el7.x86_64       3/8
  削除中                  : mysql57-community-release-el7-7.noarch          4/8
  削除中                  : mysql-community-server-5.7.21-1.el7.x86_64      5/8
  削除中                  : mysql-community-client-5.7.21-1.el7.x86_64      6/8
  削除中                  : mysql-community-libs-5.7.21-1.el7.x86_64        7/8
  削除中                  : mysql-community-common-5.7.21-1.el7.x86_64      8/8
  検証中                  : mysql-community-devel-5.7.21-1.el7.x86_64       1/8
  検証中                  : mysql-community-client-5.7.21-1.el7.x86_64      2/8
  検証中                  : mysql-community-libs-5.7.21-1.el7.x86_64        3/8
  検証中                  : mysql-connector-python-2.1.7-1.el7.x86_64       4/8
  検証中                  : mysql-utilities-1.6.5-1.el7.noarch              5/8
  検証中                  : mysql57-community-release-el7-7.noarch          6/8
  検証中                  : mysql-community-server-5.7.21-1.el7.x86_64      7/8
  検証中                  : mysql-community-common-5.7.21-1.el7.x86_64      8/8

削除しました:
  mysql-community-client.x86_64 0:5.7.21-1.el7
  mysql-community-common.x86_64 0:5.7.21-1.el7
  mysql-community-devel.x86_64 0:5.7.21-1.el7
  mysql-community-libs.x86_64 0:5.7.21-1.el7
  mysql-community-server.x86_64 0:5.7.21-1.el7
  mysql-connector-python.x86_64 0:2.1.7-1.el7
  mysql-utilities.noarch 0:1.6.5-1.el7
  mysql57-community-release.noarch 0:el7-7

完了しました!
```

## レポジトリを落とす

結論、レポジトリがある場所は```http://dev.mysql.com/get/```です。
そこが分からず、以下ではミスを続けてます。

```shell-session
[exia@localhost ~]$ sudo yum install -ivh https://dev.mysql.com/downloads/repo/yum/mysql80-community-release-el7-1.noarch.rpm
[sudo] password for exia:
読み込んだプラグイン:fastestmirror
Usage: yum [options] COMMAND

List of Commands:

check          rpmdb の問題を確認する
check-update   更新に利用できるパッケージを確認する
clean          キャッシュデータを削除する
deplist        パッケージの依存性の一覧を表示する
distribution-synchronization 最新の利用可能なバージョンへインストール済みパッケージを同期する
downgrade      パッケージのダウングレード
erase          システムから削除するパッケージ
fs             Acts on the filesystem data of the host, mainly for removing docs/lanuages for minimal hosts.
fssnapshot     Creates filesystem snapshots, or lists/deletes current snapshots.
groups         グループ情報の表示または使用
help           役立つ使い方のメッセージを表示する
history        トランザクション履歴を表示、使用する
info           パッケージもしくはパッケージのグループについての詳細を表示する
install        システムにパッケージをインストールする
list           パッケージグループの一覧を表示する
load-transaction filename から保存済みトランザクションを読み込む
makecache      メタデータキャッシュを生成する
provides       指定値を提供するパッケージを検索する
reinstall      パッケージの再インストール
repo-pkgs      Treat a repo. as a group of packages, so we can install/remove all of them
repolist       ソフトウェアリポジトリーの構成を表示する
search         指定した文字列でパッケージの詳細を検索する
shell          対話型の yum シェルを実行する
swap           Simple way to swap packages, instead of using shell
update         システムのパッケージを更新する
update-minimal Works like upgrade, but goes to the 'newest' package match which fixes a problem that affects your system
updateinfo     Acts on repository update information
upgrade        不要になったパッケージを考慮しながらパッケージを更新する
version        ホストの利用できるリポジトリーのバージョンを表示する


コマンドライン エラー: no such option: -i

[exia@localhost ~]$ sudo yum install -y https://dev.mysql.com/downloads/repo/yum/mysql80-community-release-el7-1.noarch.rpm
読み込んだプラグイン:fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
ファイルが開けません:  https://dev.mysql.com/downloads/repo/yum/mysql80-community-release-el7-1.noarch.rpm を飛ばします。
エラー: 何もしません

[exia@localhost ~]$ sudo rpm -Uvh mysql80-community-release-el7-1.noarch.rpm
エラー: mysql80-community-release-el7-1.noarch.rpm のオープンに失敗: そのようなファイルやディレクトリはありません

[exia@localhost ~]$ sudo rpm -Uvh http://dev.mysql.com/downloads/repo/yum/mysql80-community-release-el7-1.noarch.rpm
http://dev.mysql.com/downloads/repo/yum/mysql80-community-release-el7-1.noarch.rpm を取得中
curl: (22) The requested URL returned error: 404 Not Found
エラー: http://dev.mysql.com/downloads/repo/yum/mysql80-community-release-el7-1.noarch.rpm をスキップします - 転送に失敗しました

[exia@localhost ~]$ sudo rpm -Uvh https://dev.mysql.com/downloads/repo/yum/mysql80-community-release-el7-1.noarch.rpm
https://dev.mysql.com/downloads/repo/yum/mysql80-community-release-el7-1.noarch.rpm を取得中
curl: (22) The requested URL returned error: 404 Not Found
エラー: https://dev.mysql.com/downloads/repo/yum/mysql80-community-release-el7-1.noarch.rpm をスキップします - 転送に失敗しました
```

ようやく成功しました。

```shell-session
[exia@localhost ~]$ sudo rpm -Uvh http://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
http://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm を取得中
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:mysql80-community-release-el7-1  ################################# [100%]
```

## どのバージョンのMySQLを使うかを選ぶ

ここがよく分かりませんでした...。

インストールしてから設定するんじゃないの..？と思ったのですが、
レポジトリを落としてきた段階でバージョン8.0用のものが有効になっていたので良しとしました。（mysql80-community/x86_64）

```shell-session
[exia@localhost ~]$ yum repolist all | grep mysql
mysql-cluster-7.5-community/x86_64 MySQL Cluster 7.5 Community       無効
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - Sou 無効
mysql-cluster-7.6-community/x86_64 MySQL Cluster 7.6 Community       無効
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - Sou 無効
mysql-connectors-community/x86_64  MySQL Connectors Community        有効:    51
mysql-connectors-community-source  MySQL Connectors Community - Sour 無効
mysql-tools-community/x86_64       MySQL Tools Community             有効:    63
mysql-tools-community-source       MySQL Tools Community - Source    無効
mysql-tools-preview/x86_64         MySQL Tools Preview               無効
mysql-tools-preview-source         MySQL Tools Preview - Source      無効
mysql55-community/x86_64           MySQL 5.5 Community Server        無効
mysql55-community-source           MySQL 5.5 Community Server - Sour 無効
mysql56-community/x86_64           MySQL 5.6 Community Server        無効
mysql56-community-source           MySQL 5.6 Community Server - Sour 無効
!mysql57-community/x86_64          MySQL 5.7 Community Server        無効
mysql57-community-source           MySQL 5.7 Community Server - Sour 無効
mysql80-community/x86_64           MySQL 8.0 Community Server        有効:    17
mysql80-community-source           MySQL 8.0 Community Server - Sour 無効
```

## インストールする

公式サイトの通り。スッと行きました。

```shell-session
[exia@localhost ~]$ sudo yum install mysql-community-server
[sudo] password for exia:
読み込んだプラグイン:fastestmirror
base                                                                                                                                                  | 3.6 kB  00:00:00
extras                                                                                                                                                | 3.4 kB  00:00:00
mysql-connectors-community                                                                                                                            | 2.5 kB  00:00:00
mysql-tools-community                                                                                                                                 | 2.5 kB  00:00:00
mysql80-community                                                                                                                                     | 2.5 kB  00:00:00
updates                                                                                                                                               | 3.4 kB  00:00:00
(1/4): mysql-connectors-community/x86_64/primary_db                                                                                                   |  20 kB  00:00:00
(2/4): mysql80-community/x86_64/primary_db                                                                                                            |  16 kB  00:00:00
(3/4): mysql-tools-community/x86_64/primary_db                                                                                                        |  41 kB  00:00:00
(4/4): updates/7/x86_64/primary_db                                                                                                                    | 6.9 MB  00:00:12
Determining fastest mirrors
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mysql-community-server.x86_64 0:8.0.11-1.el7 を インストール
--> 依存性の処理をしています: mysql-community-common(x86-64) = 8.0.11-1.el7 のパッケージ: mysql-community-server-8.0.11-1.el7.x86_64
--> 依存性の処理をしています: mysql-community-client(x86-64) >= 8.0.0 のパッケージ: mysql-community-server-8.0.11-1.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ mysql-community-client.x86_64 0:8.0.11-1.el7 を インストール
--> 依存性の処理をしています: mysql-community-libs(x86-64) >= 8.0.0 のパッケージ: mysql-community-client-8.0.11-1.el7.x86_64
---> パッケージ mysql-community-common.x86_64 0:8.0.11-1.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ mysql-community-libs.x86_64 0:8.0.11-1.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=============================================================================================================================================================================
 Package                                          アーキテクチャー                 バージョン                              リポジトリー                                 容量
=============================================================================================================================================================================
インストール中:
 mysql-community-server                           x86_64                           8.0.11-1.el7                            mysql80-community                           341 M
依存性関連でのインストールをします:
 mysql-community-client                           x86_64                           8.0.11-1.el7                            mysql80-community                            26 M
 mysql-community-common                           x86_64                           8.0.11-1.el7                            mysql80-community                           537 k
 mysql-community-libs                             x86_64                           8.0.11-1.el7                            mysql80-community                           2.2 M

トランザクションの要約
=============================================================================================================================================================================
インストール  1 パッケージ (+3 個の依存関係のパッケージ)

総ダウンロード容量: 369 M
インストール容量: 1.7 G

Is this ok [y/d/N]: y
Downloading packages:
(1/4): mysql-community-common-8.0.11-1.el7.x86_64.rpm                                                                                                 | 537 kB  00:00:01
(2/4): mysql-community-libs-8.0.11-1.el7.x86_64.rpm                                                                                                   | 2.2 MB  00:00:03
(3/4): mysql-community-client-8.0.11-1.el7.x86_64.rpm                                                                                                 |  26 MB  00:00:37
(4/4): mysql-community-server-8.0.11-1.el7.x86_64.rpm                                                                                                 | 341 MB  00:04:32
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                         1.3 MB/s | 369 MB  00:04:37
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告: RPMDB は yum 以外で変更されました。
  インストール中          : mysql-community-common-8.0.11-1.el7.x86_64                                                                                                   1/4
  インストール中          : mysql-community-libs-8.0.11-1.el7.x86_64                                                                                                     2/4
  インストール中          : mysql-community-client-8.0.11-1.el7.x86_64                                                                                                   3/4
  インストール中          : mysql-community-server-8.0.11-1.el7.x86_64                                                                                                   4/4
  検証中                  : mysql-community-server-8.0.11-1.el7.x86_64                                                                                                   1/4
  検証中                  : mysql-community-client-8.0.11-1.el7.x86_64                                                                                                   2/4
  検証中                  : mysql-community-libs-8.0.11-1.el7.x86_64                                                                                                     3/4
  検証中                  : mysql-community-common-8.0.11-1.el7.x86_64                                                                                                   4/4

インストール:
  mysql-community-server.x86_64 0:8.0.11-1.el7

依存性関連をインストールしました:
  mysql-community-client.x86_64 0:8.0.11-1.el7              mysql-community-common.x86_64 0:8.0.11-1.el7              mysql-community-libs.x86_64 0:8.0.11-1.el7

完了しました!
```

## MySQLを起動する

上手くいきました。

```shell-session
[exia@localhost ~]$ sudo systemctl start mysqld.service
[sudo] password for exia:
[exia@localhost ~]$ sudo systemctl status mysqld.service
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 月 2018-04-23 23:26:25 JST; 16s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 2522 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 2543 (mysqld)
   Status: "SERVER_OPERATING"
   CGroup: /system.slice/mysqld.service
           └─2543 /usr/sbin/mysqld

 4月 23 23:26:15 localhost.localdomain systemd[1]: Starting MySQL Server...
 4月 23 23:26:25 localhost.localdomain systemd[1]: Started MySQL Server.
```

## 常時起動設定をおこなう

CentOS7ではこのコマンドは使えないってことなのでしょうか。

```shell-session
[exia@localhost ~]$ chkconfig --list mysqld

注記: この出力は SysV サービスのみであり、ネイティブな systemd のサービスは含まれていません。
      systemd services. SysV 設定のデータはネイティブな systemd の設定によって上書きされます。
      systemd サービスを一覧表示するには 'systemctl list-unit-files' を使用してください。
      特定のターゲットにおいて有効化されているサービスを確認するには、
      'systemctl list-dependencies [target]' 。

サービス mysqld に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
[exia@localhost ~]$ chkconfig --list mysqld.service

注記: この出力は SysV サービスのみであり、ネイティブな systemd のサービスは含まれていません。
      systemd services. SysV 設定のデータはネイティブな systemd の設定によって上書きされます。
      systemd サービスを一覧表示するには 'systemctl list-unit-files' を使用してください。
      特定のターゲットにおいて有効化されているサービスを確認するには、
      'systemctl list-dependencies [target]' 。

サービス mysqld.service に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
```

代わりにこちらを。
このコマンドの結果が```enabled```なら常時起動設定がONになっています。
参考（[Centos7でmysql のインストールとインストール時のエラー対処](https://qiita.com/ma_me/items/ae449ad8a2c424665310)）

```shell-session
[exia@localhost ~]$ systemctl is-enabled mysqld.service
enabled
```

## バージョン確認をする

MySQLのバージョンが8.0になっていることが確認できました。

```shell-session
[exia@localhost ~]$ mysql --version
mysql  Ver 8.0.11 for Linux on x86_64 (MySQL Community Server - GPL)
```

**完了！**

# 終わりに

アップグレードしただけですね...。
といっても、仕事でもプライベートでもMySQLはphpmyadminでしか扱わないので、あんまり良くわかってない..。

ありがとうございました。