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)
公式手順
ではどうするか。
ググったら見つけました。
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
5.7を選択してOK
mysql-5.7になっていることを確認してカーソルキーでフォーカスをOKに移動してEnter
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で進みます。
カーソルキーでmysql-8.0を選択して、TabキーでOKにフォーカスしてEnter
カーソルキーでOKを選択してEnter、メニューを終了します。
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