WSLでMySQLのアップデートをかけておかしくなった時の対処法

##初めに
今回WSLでMySQLのアップデートをかけたらエラーが起きて、なんとか対処ができたのでその時のことをまとめてみようとこの記事を書きました。
また筆者はQiitaへの投稿は初めてです。

##起きたこと
WSLを起動し`sudo apt update && sudo apt upgrade`コマンドを実行し、MySQLのアップデートを行ったところエラーが起きました。
初回の時のエラーはターミナルを一度閉じてしまって完全にはわからないので、以降で表示されたエラーを以下に載せます。

```
$ sudo apt-get install mysql-server
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  libevent-core-2.0-5 mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7
提案パッケージ:
  mailx tinyca
以下のパッケージが新たにインストールされます:
  libevent-core-2.0-5 mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server mysql-server-5.7
  mysql-server-core-5.7
アップグレード: 0 個、新規インストール: 7 個、削除: 0 個、保留: 0 個。
18.4 MB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 160 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
パッケージを事前設定しています ...
以前に未選択のパッケージ mysql-common を選択しています。
(データベースを読み込んでいます ... 現在 65131 個のファイルとディレクトリがインストールされています。)
.../mysql-common_5.7.25-0ubuntu0.16.04.2_all.deb を展開する準備をしています ...
mysql-common (5.7.25-0ubuntu0.16.04.2) を展開しています...
以前に未選択のパッケージ mysql-client-core-5.7 を選択しています。
.../mysql-client-core-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb を展開する準備をしています ...
mysql-client-core-5.7 (5.7.25-0ubuntu0.16.04.2) を展開しています...
以前に未選択のパッケージ mysql-client-5.7 を選択しています。
.../mysql-client-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb を展開する準備をしています ...
mysql-client-5.7 (5.7.25-0ubuntu0.16.04.2) を展開しています...
以前に未選択のパッケージ mysql-server-core-5.7 を選択しています。
.../mysql-server-core-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb を展開する準備をしています ...
mysql-server-core-5.7 (5.7.25-0ubuntu0.16.04.2) を展開しています...
以前に未選択のパッケージ libevent-core-2.0-5:amd64 を選択しています。
.../libevent-core-2.0-5_2.0.21-stable-2ubuntu0.16.04.1_amd64.deb を展開する準備をしています ...
libevent-core-2.0-5:amd64 (2.0.21-stable-2ubuntu0.16.04.1) を展開しています...
man-db (2.7.5-1) のトリガを処理しています ...
libc-bin (2.23-0ubuntu10) のトリガを処理しています ...
mysql-common (5.7.25-0ubuntu0.16.04.2) を設定しています ...
update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/my.cnf.fallback を使います
以前に未選択のパッケージ mysql-server-5.7 を選択しています。
(データベースを読み込んでいます ... 現在 65292 個のファイルとディレクトリがインストールされています。)
.../mysql-server-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb を展開する準備をしています ...
mysql-server-5.7 (5.7.25-0ubuntu0.16.04.2) を展開しています...
以前に未選択のパッケージ mysql-server を選択しています。
.../mysql-server_5.7.25-0ubuntu0.16.04.2_all.deb を展開する準備をしています ...
mysql-server (5.7.25-0ubuntu0.16.04.2) を展開しています...
systemd (229-4ubuntu21.15) のトリガを処理しています ...
ureadahead (0.100.0-19) のトリガを処理しています ...
man-db (2.7.5-1) のトリガを処理しています ...
mysql-client-core-5.7 (5.7.25-0ubuntu0.16.04.2) を設定しています ...
mysql-client-5.7 (5.7.25-0ubuntu0.16.04.2) を設定しています ...
mysql-server-core-5.7 (5.7.25-0ubuntu0.16.04.2) を設定しています ...
libevent-core-2.0-5:amd64 (2.0.21-stable-2ubuntu0.16.04.1) を設定しています ...
mysql-server-5.7 (5.7.25-0ubuntu0.16.04.2) を設定しています ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/mysql.cnf を使います
(データベースを読み込んでいます ... 現在 65383 個のファイルとディレクトリがインストールされています。)
.../mysql-server-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb を展開する準備をしています ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
mysql-server-5.7 (5.7.25-0ubuntu0.16.04.2) で (5.7.25-0ubuntu0.16.04.2 に) 上書き展開しています ...
systemd (229-4ubuntu21.15) のトリガを処理しています ...
ureadahead (0.100.0-19) のトリガを処理しています ...
man-db (2.7.5-1) のトリガを処理しています ...
mysql-server-5.7 (5.7.25-0ubuntu0.16.04.2) を設定しています ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
mysql_upgrade: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) while connecting to the MySQL server
Upgrade process encountered error and will not continue.
mysql_upgrade failed with exit status 11
dpkg: パッケージ mysql-server-5.7 の処理中にエラーが発生しました (--configure):
 サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 1 を返しました
処理中にエラーが発生しました:
 mysql-server-5.7
E: Sub-process /usr/bin/dpkg returned an error code (1)
```
また初回の頃に載っていたエラー内容ですが
`dpkg: パッケージ mysql-server の処理中にエラーが発生しました (--configure):`
`debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable`
`dmesg: read kernel buffer failed: 関数は実装されていません`
`update-alternatives: エラー: alternative パス /etc/mysql/my.cnf.fallback が存在しません`
があったようです。

##対処したこと
`apt update && apt upgrade`でエラーが起きたことは初めてだったのでMySQLの設定か、必要なファイルが削除されたのかと思いましたがわかりませんでした。
最終的にバックアップをとった上でMySQLを一旦削除し、再インストールすることにしました。

バックアップは /etc/mysql の中にある設定ファイルと以下のコマンド

```
mysqldump --default-character-set=binary -uユーザー名 -pパスワード データベース名 > ファイル名.sql
```

でデータベースのバックアップを行いました。

再インストールに関しては色々検索したところ[このページ](https://github.com/Microsoft/WSL/issues/1332#issuecomment-320469132)たどり着き参考にさせてもらいました。
コマンド内容は

```
sudo apt-get remove --purge 'mysql*'
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get install mysql-server
```

です。
この最後のmysqlのインストールに関してなのですが、これで問題なく入れられるだろうと`apt-get`でなく`apt`でやろうとしたらエラー（なんのエラーだったかは残っていない）が起きてしまい、載っていた通り`apt-get`で行いました。

##ログ
ログに関しては以下の通りです。

```
~$ sudo apt-get remove --purge 'mysql*'
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
注意、glob 'mysql*' のために 'mysqltcl' を選択します
注意、glob 'mysql*' のために 'mysql-mmm-agent' を選択します
注意、glob 'mysql*' のために 'mysql-workbench' を選択します
注意、glob 'mysql*' のために 'mysql-client-5.5' を選択します
注意、glob 'mysql*' のために 'mysql-client-5.6' を選択します
注意、glob 'mysql*' のために 'mysql-client-5.7' を選択します
注意、glob 'mysql*' のために 'mysql-mmm-tools' を選択します
注意、glob 'mysql*' のために 'mysql-common-5.6' を選択します
注意、glob 'mysql*' のために 'mysql-server-5.0' を選択します
注意、glob 'mysql*' のために 'mysql-server-5.1' を選択します
注意、glob 'mysql*' のために 'mysql-server-5.5' を選択します
注意、glob 'mysql*' のために 'mysql-server-5.6' を選択します
注意、glob 'mysql*' のために 'mysql-server-5.7' を選択します
注意、glob 'mysql*' のために 'mysql-utilities' を選択します
注意、glob 'mysql*' のために 'mysql-testsuite' を選択します
注意、glob 'mysql*' のために 'mysql-mmm-common' を選択します
注意、glob 'mysql*' のために 'mysql-server' を選択します
注意、glob 'mysql*' のために 'mysql-client' を選択します
注意、glob 'mysql*' のために 'mysql-sandbox' を選択します
注意、glob 'mysql*' のために 'mysql-client-core-5.5' を選択します
注意、glob 'mysql*' のために 'mysql-client-core-5.6' を選択します
注意、glob 'mysql*' のために 'mysql-client-core-5.7' を選択します
注意、glob 'mysql*' のために 'mysql-testsuite-5.5' を選択します
注意、glob 'mysql*' のために 'mysql-testsuite-5.6' を選択します
注意、glob 'mysql*' のために 'mysql-testsuite-5.7' を選択します
注意、glob 'mysql*' のために 'mysql-common' を選択します
注意、glob 'mysql*' のために 'mysql-mmm-monitor' を選択します
注意、glob 'mysql*' のために 'mysqltuner' を選択します
注意、glob 'mysql*' のために 'mysql-workbench-data' を選択します
注意、glob 'mysql*' のために 'mysql-server-core-5.1' を選択します
注意、glob 'mysql*' のために 'mysql-server-core-5.5' を選択します
注意、glob 'mysql*' のために 'mysql-server-core-5.6' を選択します
注意、glob 'mysql*' のために 'mysql-server-core-5.7' を選択します
注意、glob 'mysql*' のために 'mysql-source-5.7' を選択します
パッケージ 'mysql-client-5.5' はインストールされていないため削除もされません
パッケージ 'mysql-client-5.6' はインストールされていないため削除もされません
パッケージ 'mysql-server-core-5.6' はインストールされていないため削除もされません
パッケージ 'mysql-client-core-5.5' はインストールされていないため削除もされません
パッケージ 'mysql-client-core-5.6' はインストールされていないため削除もされません
注意、'mysql-common-5.6' の代わりに 'mysql-common' を選択します
パッケージ 'mysql-server-5.5' はインストールされていないため削除もされません
パッケージ 'mysql-server-5.6' はインストールされていないため削除もされません
パッケージ 'mysql-server-core-5.5' はインストールされていないため削除もされません
パッケージ 'mysql-testsuite-5.5' はインストールされていないため削除もされません
パッケージ 'mysql-testsuite-5.6' はインストールされていないため削除もされません
パッケージ 'mysql-server-5.0' はインストールされていないため削除もされません
パッケージ 'mysql-server-5.1' はインストールされていないため削除もされません
パッケージ 'mysql-server-core-5.1' はインストールされていないため削除もされません
パッケージ 'mysql-mmm-agent' はインストールされていないため削除もされません
パッケージ 'mysql-mmm-common' はインストールされていないため削除もされません
パッケージ 'mysql-mmm-monitor' はインストールされていないため削除もされません
パッケージ 'mysql-mmm-tools' はインストールされていないため削除もされません
パッケージ 'mysql-sandbox' はインストールされていないため削除もされません
パッケージ 'mysql-utilities' はインストールされていないため削除もされません
パッケージ 'mysql-workbench' はインストールされていないため削除もされません
パッケージ 'mysql-workbench-data' はインストールされていないため削除もされません
パッケージ 'mysqltcl' はインストールされていないため削除もされません
パッケージ 'mysqltuner' はインストールされていないため削除もされません
パッケージ 'mysql-client' はインストールされていないため削除もされません
パッケージ 'mysql-source-5.7' はインストールされていないため削除もされません
パッケージ 'mysql-testsuite' はインストールされていないため削除もされません
パッケージ 'mysql-testsuite-5.7' はインストールされていないため削除もされません
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libevent-core-2.0-5
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージは「削除」されます:
  mysql-client-5.7* mysql-client-core-5.7* mysql-common* mysql-server* mysql-server-5.7* mysql-server-core-5.7*
アップグレード: 0 個、新規インストール: 0 個、削除: 6 個、保留: 0 個。
1 個のパッケージが完全にインストールまたは削除されていません。
この操作後に 160 MB のディスク容量が解放されます。
続行しますか? [Y/n] y
(データベースを読み込んでいます ... 現在 65383 個のファイルとディレクトリがインストールされています。)
mysql-server (5.7.25-0ubuntu0.16.04.2) を削除しています ...
mysql-server-5.7 (5.7.25-0ubuntu0.16.04.2) を削除しています ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/my.cnf.fallback を使います
mysql-server-5.7 (5.7.25-0ubuntu0.16.04.2) の設定ファイルを削除しています ...
mysql-client-5.7 (5.7.25-0ubuntu0.16.04.2) を削除しています ...
mysql-client-core-5.7 (5.7.25-0ubuntu0.16.04.2) を削除しています ...
mysql-common (5.7.25-0ubuntu0.16.04.2) を削除しています ...
mysql-common (5.7.25-0ubuntu0.16.04.2) の設定ファイルを削除しています ...
dpkg: 警告: mysql-common の削除中、ディレクトリ '/etc/mysql' が空でないため削除できませんでした
mysql-server-core-5.7 (5.7.25-0ubuntu0.16.04.2) を削除しています ...
man-db (2.7.5-1) のトリガを処理しています ...
~$ sudo rm -rf /etc/mysql /var/lib/mysql
~$ sudo apt-get autoremove
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージは「削除」されます:
  libevent-core-2.0-5
アップグレード: 0 個、新規インストール: 0 個、削除: 1 個、保留: 0 個。
この操作後に 191 kB のディスク容量が解放されます。
続行しますか? [Y/n] y
(データベースを読み込んでいます ... 現在 65136 個のファイルとディレクトリがインストールされています。)
libevent-core-2.0-5:amd64 (2.0.21-stable-2ubuntu0.16.04.1) を削除しています ...
libc-bin (2.23-0ubuntu10) のトリガを処理しています ...
~$ sudo apt-get autoclean
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
~$ sudo apt-get install mysql-server
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  libevent-core-2.0-5 mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7
提案パッケージ:
  mailx tinyca
以下のパッケージが新たにインストールされます:
  libevent-core-2.0-5 mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server mysql-server-5.7
  mysql-server-core-5.7
アップグレード: 0 個、新規インストール: 7 個、削除: 0 個、保留: 0 個。
18.4 MB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 160 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
パッケージを事前設定しています ...
以前に未選択のパッケージ mysql-common を選択しています。
(データベースを読み込んでいます ... 現在 65131 個のファイルとディレクトリがインストールされています。)
.../mysql-common_5.7.25-0ubuntu0.16.04.2_all.deb を展開する準備をしています ...
mysql-common (5.7.25-0ubuntu0.16.04.2) を展開しています...
以前に未選択のパッケージ mysql-client-core-5.7 を選択しています。
.../mysql-client-core-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb を展開する準備をしています ...
mysql-client-core-5.7 (5.7.25-0ubuntu0.16.04.2) を展開しています...
以前に未選択のパッケージ mysql-client-5.7 を選択しています。
.../mysql-client-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb を展開する準備をしています ...
mysql-client-5.7 (5.7.25-0ubuntu0.16.04.2) を展開しています...
以前に未選択のパッケージ mysql-server-core-5.7 を選択しています。
.../mysql-server-core-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb を展開する準備をしています ...
mysql-server-core-5.7 (5.7.25-0ubuntu0.16.04.2) を展開しています...
以前に未選択のパッケージ libevent-core-2.0-5:amd64 を選択しています。
.../libevent-core-2.0-5_2.0.21-stable-2ubuntu0.16.04.1_amd64.deb を展開する準備をしています ...
libevent-core-2.0-5:amd64 (2.0.21-stable-2ubuntu0.16.04.1) を展開しています...
man-db (2.7.5-1) のトリガを処理しています ...
libc-bin (2.23-0ubuntu10) のトリガを処理しています ...
mysql-common (5.7.25-0ubuntu0.16.04.2) を設定しています ...
update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/my.cnf.fallback を使います
以前に未選択のパッケージ mysql-server-5.7 を選択しています。
(データベースを読み込んでいます ... 現在 65292 個のファイルとディレクトリがインストールされています。)
.../mysql-server-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb を展開する準備をしています ...
mysql-server-5.7 (5.7.25-0ubuntu0.16.04.2) を展開しています...
以前に未選択のパッケージ mysql-server を選択しています。
.../mysql-server_5.7.25-0ubuntu0.16.04.2_all.deb を展開する準備をしています ...
mysql-server (5.7.25-0ubuntu0.16.04.2) を展開しています...
systemd (229-4ubuntu21.15) のトリガを処理しています ...
ureadahead (0.100.0-19) のトリガを処理しています ...
man-db (2.7.5-1) のトリガを処理しています ...
mysql-client-core-5.7 (5.7.25-0ubuntu0.16.04.2) を設定しています ...
mysql-client-5.7 (5.7.25-0ubuntu0.16.04.2) を設定しています ...
mysql-server-core-5.7 (5.7.25-0ubuntu0.16.04.2) を設定しています ...
libevent-core-2.0-5:amd64 (2.0.21-stable-2ubuntu0.16.04.1) を設定しています ...
mysql-server-5.7 (5.7.25-0ubuntu0.16.04.2) を設定しています ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/mysql.cnf を使います
Renaming removed key_buffer and myisam-recover options (if present)
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
mysql-server (5.7.25-0ubuntu0.16.04.2) を設定しています ...
libc-bin (2.23-0ubuntu10) のトリガを処理しています ...
systemd (229-4ubuntu21.15) のトリガを処理しています ...
ureadahead (0.100.0-19) のトリガを処理しています ...
~$ sudo apt update
ヒット:1 http://ppa.launchpad.net/ondrej/php/ubuntu xenial InRelease
ヒット:2 http://archive.ubuntu.com/ubuntu xenial InRelease
取得:3 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]
ヒット:4 https://dl.yarnpkg.com/debian stable InRelease
取得:5 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB]
取得:6 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [721 kB]
取得:7 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]
1,046 kB を 11秒 で取得しました (89.6 kB/s)
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
パッケージはすべて最新です。
~$ sudo service mysql start
 * Starting MySQL database server mysqld                                                                         [ OK ]
~$ sudo mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.25-0ubuntu0.16.04.2 (Ubuntu)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
```

##確認
以上の通りに行ったことでMySQLは再インストールできたのですが、もう一度アップデートをして問題ないか気になったため
気になっていた`mysql-server`の再インストールと`mysql_upgrade`を行ってみました。
結果は以下の通りです。

```
~$ sudo apt install --reinstall mysql-server
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
アップグレード: 0 個、新規インストール: 0 個、再インストール: 1 個、削除: 0 個、保留: 0 個。
10.8 kB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 0 B のディスク容量が消費されます。
(データベースを読み込んでいます ... 現在 65383 個のファイルとディレクトリがインストールされています。)
.../mysql-server_5.7.25-0ubuntu0.16.04.2_all.deb を展開する準備をしています ...
mysql-server (5.7.25-0ubuntu0.16.04.2) で (5.7.25-0ubuntu0.16.04.2 に) 上書き展開しています ...
mysql-server (5.7.25-0ubuntu0.16.04.2) を設定しています ...
~$ sudo apt install --reinstall mysql-server-5.7 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
アップグレード: 0 個、新規インストール: 0 個、再インストール: 1 個、削除: 0 個、保留: 0 個。
2,623 kB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 0 B のディスク容量が消費されます。
パッケージを事前設定しています ...
(データベースを読み込んでいます ... 現在 65383 個のファイルとディレクトリがインストールされています。)
.../mysql-server-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb を展開する準備をしています ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
mysql-server-5.7 (5.7.25-0ubuntu0.16.04.2) で (5.7.25-0ubuntu0.16.04.2 に) 上書き展開しています ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
systemd (229-4ubuntu21.15) のトリガを処理しています ...
ureadahead (0.100.0-19) のトリガを処理しています ...
man-db (2.7.5-1) のトリガを処理しています ...
mysql-server-5.7 (5.7.25-0ubuntu0.16.04.2) を設定しています ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.engine_cost                                  OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
The sys schema is already up to date (version 1.5.1).
Checking databases.
sys.sys_config                                     OK
Upgrade process completed successfully.
Checking if update is needed.
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of restart.
~$ sudo apt install --reinstall mysql-server-5.7 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
アップグレード: 0 個、新規インストール: 0 個、再インストール: 1 個、削除: 0 個、保留: 0 個。
2,623 kB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 0 B のディスク容量が消費されます。
パッケージを事前設定しています ...
(データベースを読み込んでいます ... 現在 65383 個のファイルとディレクトリがインストールされています。)
.../mysql-server-5.7_5.7.25-0ubuntu0.16.04.2_amd64.deb を展開する準備をしています ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
mysql-server-5.7 (5.7.25-0ubuntu0.16.04.2) で (5.7.25-0ubuntu0.16.04.2 に) 上書き展開しています ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
systemd (229-4ubuntu21.15) のトリガを処理しています ...
ureadahead (0.100.0-19) のトリガを処理しています ...
man-db (2.7.5-1) のトリガを処理しています ...
mysql-server-5.7 (5.7.25-0ubuntu0.16.04.2) を設定しています ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of stop.
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.25, use --force if you still need to run mysql_upgrade
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of restart.
~$ sudo su -
~# mysql_upgrade
mysql_upgrade: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) while connecting to the MySQL server
Upgrade process encountered error and will not continue.
~# mysql_upgrade -p
Enter password: 
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.25, use --force if you still need to run mysql_upgrade
~# mysql_upgrade -u root -p --force
Enter password: 
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.engine_cost                                  OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
The sys schema is already up to date (version 1.5.1).
Checking databases.
sys.sys_config                                     OK
Upgrade process completed successfully.
Checking if update is needed.
```

一応再インストールできたようですがこれで問題ないかの確認が取れないので不安は残ってしまいました。

##あとがき
今回は、初めて遭遇した`apt update && apt upgrade`コマンド実行時のエラーだったためかなり時間がかかってしまいました。
一体どこが悪いのか全く分からず結局再インストールということになってしまのは少し悔やまれます。
再インストールもただ`apt remove`や`apt purge`しただけでは治らず結構手間取りました。
一応このUbuntu自体の入れ直しになるほど大ごとにはならなかったので良かったとは思います。
また今回のことでエラー内容やログはその時対処する分だけでなく何かしらでしっかり保存したほうがいいと感じました。
今後同じようなことが起きたときは同じように再インストールも手の一つとして考えていこうと思う。