WSL2のUbuntu18.04でMySQL8.0を動かす

 

公式の手順に沿ってMySQL8.0をWSL2のUbuntu18.04にインストールしてもMySQLは動作しません。

試しにMySQL8をインストールしてみます。

インストール後にserviceコマンドでmysqlをstartしても「mysql: unrecognized service」と表示されてstart出来ません。

***@***:~$ service mysql start
mysql: unrecognized service

 

/usr/bin/mysqlを直接実行してもエラーになります。

***@***:~$ mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

 

公式手順

dev.mysql.com

 

ではどうするか。

ググったら見つけました。

Linux Native AIO interface is not supported on this platform. · Issue #3631 · microsoft/WSL · GitHub

まずMySQL5.XをインストールしてMySQL8にUpgrade、そしてスクリプトの修正とのことです。

やってみましょう。

 

 

MySQLのRepositoryを追加します。

MySQL :: A Quick Guide to Using the MySQL APT Repository

 

curlでパッケージをDownloadします。

***@***:~$ curl -LO https://dev.mysql.com/get/mysql-apt-config_0.8.15-1_all.deb
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 35532 100 35532 0 0 25525 0 0:00:01 0:00:01 --:--:-- 25525

 

 Downloadしたパッケージをインストールします。

***@***:~$ sudo dpkg -i ./mysql-apt-config_0.8.15-1_all.deb

 

Tabキーで「OK」にフォーカスしてEnter

f:id:fsms:20201028205554p:plain

 

5.7を選択してOK

f:id:fsms:20201029044202p:plain

 

mysql-5.7になっていることを確認してカーソルキーでフォーカスをOKに移動してEnter

f:id:fsms:20201029044334p:plain


sudo apt upateして、

***@***:~$ sudo apt update

 

インストール

***@***:~$ sudo apt install -y mysql-server

 

 MySQL5.7が起動しました。

***@***:~$ sudo service mysql start
..
* MySQL Community Server 5.7.32 is started

 

止めます。

***@***:~$ sudo service mysql stop
..
* MySQL Community Server 5.7.32 is stopped

 

 MySQLのインストール対象をMySQL8.0に変更します。

下記コマンドでconfigメニューを起動。

***@***:~$ sudo dpkg-reconfigure mysql-apt-config

 

TabキーでOKにフォーカス、Enterで進みます。

f:id:fsms:20201029082858p:plain

 

カーソルキーでmysql-8.0を選択して、TabキーでOKにフォーカスしてEnter

f:id:fsms:20201029083034p:plain

 

カーソルキーでOKを選択してEnter、メニューを終了します。

f:id:fsms:20201029083846p:plain

 

MySQL8.0にUpdateします。

***@***:~$ sudo apt update
***@***:~$ sudo apt upgrade

 

「sudo service mysql start」を実行してもエラーメッセージが表示されます。

***@***:~$ sudo service mysql start
/etc/init.d/mysql: line 40: /usr/share/mysql/mysql-helpers: No such file or directory
/etc/init.d/mysql: line 51: pathfind: command not found
/etc/init.d/mysql: line 56: get_mysql_option: command not found
/etc/init.d/mysql: line 63: get_running: command not found
/etc/init.d/mysql: line 63: [: : integer expression expected
/etc/init.d/mysql: line 67: verify_ready: command not found
/etc/init.d/mysql: line 68: verify_database: command not found
/etc/init.d/mysql: line 73: verify_server: command not found
* MySQL Community Server unknown did not start. Please check logs for more details.

 

ただ、エラーが出てもMySQLのプロセスは起動してますね。

***@***:~$ ps -ef|grep mysql
mysql 9657 6 0 09:02 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe
mysql 9771 9657 8 09:02 ? 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld
mysqld.sock

 

mysqlのプロセスを全てkillします。

***@***:~$ sudo pkill mysql

 

 

「/etc/init.d/mysql」を下記修正します。

***@***:~$ sudo vi /etc/init.d/mysql

修正前「 /usr/share/mysql/mysql-helpers」

修正後「/usr/share/mysql-8.0/mysql-helpers」

 

Diff結果

***@***:~$ diff /etc/init.d/mysql.org /etc/init.d/mysql
40c40
< . /usr/share/mysql/mysql-helpers
---
> . /usr/share/mysql-8.0/mysql-helpers

 

MySQL8.0をスタートします。

***@***:~$ sudo service mysql start
..
* MySQL Community Server 8.0.22 is started