I am running Ubuntu 18.04 on WSL and I am trying to install MySQL-server
I keep get the error as displayed on the screenshot attached..I have tried several times to
apt-get autoclean
sudo dpkg --configure -a
sudo apt-get install -f
sudo apt-get dist-upgrade
Any ideas? I keep coming up with the same error.
error output
To install MySQL on WSL (ie. Ubuntu): Open your WSL terminal (ie. Ubuntu). Once the packages have updated, install MySQL with: sudo apt install mysql-server Confirm installation and get the version number: mysql --version
Install MySQL. To install MySQL on WSL (Ubuntu 18.04): Open your WSL terminal (ie. Ubuntu 18.04). Update your Ubuntu packages: sudo apt update; Once the packages have updated, install MySQL with: sudo apt install mysql-server; Confirm installation and get the version number: mysql --version; You may also want to run the included security script.
The reason is you have a MySQL-server installed on your native OS Win10. How to fix it: Go to Windows service, stop the MySQL service. Restart your wsl instance.
Get started with MySQL, PostgreSQL, MongoDB, Redis, Microsoft SQL Server, or SQLite. Running Windows 10, updated to version 2004, Build 19041 or higher. Install WSL and create a user name and password for the Linux distribution. Linux distribution running in WSL 2 mode.
I had the exact same problem and I took these steps to fix it. If you want the quick TL;DR, just jump to either the step 2 (for MySQL 5.x) or the step 4 (for MySQL 8.x). I just include the other two steps as well to say more about what didn't work for me(but might be still helpful to someone else):
STEP1:
Some people get errors about sockets(just like pipes, sockets are things that make the communication between mysql server and its clients possible) and thus suggest using command line option --protocl=TCP
or adding --protocol:tcp
to the mysqld.conf
to make it use TCP instead of these sockets(which are better for faster local connection). But there's the error Error writing /etc/mysql/mysqld.conf.d/mysqld.conf: No such file or directory"
when I try to save that configuration file (initiated with "sudo nano").
I even cleaned up everything and installed mysql once again from scratch:
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get remove --purge *mariadb*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt update
sudo apt upgrade
sudo apt-get install mysql-server
But still even that configuration file doesn't exist for me.
STEP2:
I see that running mysql
says mysql.exe: command not found
, so I think the main problem is with finding the executable from PATH. But the /etc/bin/mysql
exists and also the /etc/bin
is in the PATH, so I don't know why I get the command-not-found error when I run the mysql
. Anyway, I run the /etc/bin/mysql
and it gives yet another error:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Accidentally, I try sudo mysql
and all of a sudden it successfully connects to the mysql server and shows the version 5.7. i.e., only adding the sudo
made it work! I am not a Linux guru but I [used to] think that when sudo
is needed, I should get a permission error
and not a mysql.exe: command not found
.
STEP3:
I'm following a tutorial which is based on MySQL 8. So I think probably upgrading to MySQL version 8 might fix both of my issues(it turns out that the necessity of sudo
is not an issue at all, it has to be there normally, if not configured otherwise). So I follow the instructions in here. I add the MySQL APT repositories to my repository list, and then apt update & re-install the mysql-server. This time, I get a window which asks about the version and I choose version 8. Installation finishes and sudo mysql --version
gives mysql Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)
, HOWEVER, this time even sudo mysql
gives the error: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
. Now even sudo
is not helping!
STEP4:
I check the error log in /var/log/mysql/error.log
and realize there's a problem with this description: Linux Native AIO interface is not supported on this platform
. so I Google it and finally fix my issue with MySQL version 8 installation on WSL using this very helpful comment from @jw-redpanda:
Direct installation of MySQL 8.x will not work on WSL 1(that's probably the reason why we failed at step 3). It has problem starting the server. Steps below should work:
1. Remove MySQL 8.x:
sudo apt-get purge mysql-server mysql-client
sudo apt-get -y autoremove
2. Change to MySQL 5.x candidate:
sudo dpkg -i mysql-apt-config_0.8.15-1_all.deb
(if you don't have it, get it from here: https://dev.mysql.com/downloads/repo/apt/)
3. Double check current apt policy of MySQL is 5.x:
sudo apt-get update
4. Install MySQL 5.x
sudo service mysql start (this should work without error)
5. Change to MySQL 8.x candidate
sudo apt-get update
sudo apt policy mysql-server (it will show 8.x is the default candidate)
6. Install MySQL 8.x
sudo apt-get -y install mysql-server
7. Modify a script as there is a bug
sudo nano /etc/init.d/mysql
(search for a line ". /usr/share/mysql/mysql-helpers" and change it to
". /usr/share/mysql-8.0/mysql-helpers")
8. Upgrade system tables to MySQL 8.x
sudo service mysql start (this should start without error)
sudo mysql -u root -p
Hope this also works for you!
As per your output, Its looks like package mysql-server
depends on mysql-server-5.7
but mysql-server-5.7
was not configured properly in previous installation.So you can remove mysql-server-5.7
and its packages and install again.
Removing 'mysql-server-5.7` and its dependencies
sudo dpkg -r mysql-client-5.7
sudo dpkg -r mysql-server-5.7
sudo dpkg -r libmysqlclient20:i386
sudo dpkg -r libmysqlclient20:amd64
sudo dpkg -r libmysqlclient18:amd64
sudo dpkg -r mysql-common
Re-installing mysql-server
sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With