Installing MySQL 8.0 Under WSL 2 and Ubuntu
Here's a PSA for those wanting to install MySQL Server 8.0 under the new Windows Subsystem for Linux - WSL 2, with an Ubuntu distribution.
Systemd is not available as a default in WSL 2, and init.d scripts are not run at startup.
What's more, if you install MySQL 8 from the deb package here https://dev.mysql.com/downloads/repo/apt/ - the default mysql.server helper script that is used to start or stop MySQL won't be installed.
One solution is to download the mysql.server.sh
script from here - https://github.com/mysql/mysql-server/tree/8.0/support-files - and then copy and rename the script to /etc/init.d/mysql
(make sure that it's also executable - chmod +x mysql
)
You'll then need to set the default values for basdir
, datadir
and pid file locations.
Here's an excerpt with the top portion of the file and the settings that worked for me...
# If you change base dir, you must also change datadir. These may get
# overwritten by settings in the MySQL configuration files.
basedir=/usr
datadir=/var/lib/mysql
# Default value, in seconds, afterwhich the script should timeout waiting
# for server start.
# Value here is overriden by value in my.cnf.
# 0 means don't wait at all
# Negative numbers mean to wait indefinitely
service_startup_timeout=900
# Lock directory for RedHat / SuSE.
lockdir='/var/lock/subsys'
lock_file_path="$lockdir/mysql"
# The following variables are only set for letting mysql.server find things.
# Set some defaults
mysqld_pid_file_path=/var/run/mysqld/mysqld.pid
if test -z "$basedir"
After this you should be able to start and stop MySQL as follows:
sudo service mysql start
sudo service mysql stop
Updated: In this post https://www.58bits.com/blog/2020/05/30/wsl-2-setup-development I created a helper script that I use to start and stop the services I need under WSL 2...
#!/bin/bash
sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
sudo service mysql "$@"
sudo service php7.3-fpm "$@"
sudo service nginx "$@"
SOLR_ULIMIT_CHECKS=false /opt/solr/bin/solr "$@"
For whatever reason, I need to check that the /var/run/mysqld
directory exists and permissions are set before starting MySQL.
I then alias the following commands in my .localrc
or .local.fish
files:
#wsl
alias wsl-up='~/Scripts/windows/wsl-exec-services.sh start'
alias wsl-down='~/Scripts/windows/wsl-exec-services.sh stop'
If I've rebooted, or I want to switch to another distribution running similar services, I run wsl-up
, or wsl-down
as needed.
Comments
Great.
Great.
Hi, I am having a lot of…
Hi,
I am having a lot of issues while installing MySQL 8.0.12 on Ubuntu 18.04 WSL 1.
Have you ever done that before or just on WSL 2?
Thank you
Hi Gerson, no - I've never…
Hi Gerson, no - I've never tried to install any version of MySQL under WSL 1. Sorry I can't be of more help.
Add new comment