wsl2 安装 mysql 实战

4,649 阅读2分钟

持续更新...

前言

近期在 Win10 中装了 WSL(Windows Subsystem for Linux),由于最近搞 nodejs 时经常用到 mysql,于是试图在 WSL(Ubuntu)中安装 mysql 。下面为大家复现情景 L:

安装 mysql

sudo apt install mysql-server mysql-client

安装完成后尝试启动 MySQL

sudo mysql

接着出现报错

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

带着问题到 Google 求知若渴的寻找解决方案。

从前辈的经验可得知:在 WSL 中,/var/run/mysqld/mysqld.sock 文件不存在。

于是执行 vim /etc/mysql/my.cnf 查看内容:

#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

根据上述配置在/etc/mysql/mysql.conf.d 目录下的 打开 mysqld.cnf 文件发现

wsl 的 mysqld.cnf 只有*[mysql]*这个内容,缺少了 socket 等配置信息

因此撸起键盘就是哒哒啊,输入内容

bind-address = 127.0.0.1

socket = /var/run/mysqld/mysqld.sock

sock 文件配置成功~~

接着,由于 WSL 的/var/run 下面没有 mysqld 目录,所以执行下述命令新增目录

sudo mkdir -p /var/run/mysqld
sudo chown mysql /var/run/mysqld/
sudo service mysql restart

接着重启 mysql 服务,当以为大功告成时,mysql 再次给了我一个晴天霹雳,shell 上冒出以下错误

  • mysql 启动失败:su: warning: cannot change directory to /nonexistent: No such file or directory

这种错误一般是 mysql 服务器异常关机导致的

解决方案如下:

# Ubuntu
sudo service mysql stop
sudo usermod -d /var/lib/mysql/ mysql
sudo service mysql start
# CentOS
sudo systemctl stop mysql.service
sudo usermod -d /var/lib/mysql/ mysql
sudo systemctl start mysql.service

至此,问题基本解决,下面还有 mysql 的安全检测问题,后面在更新吧~~

链接