如果在 WSL2 Ubuntu18.04 上安装 MySQL8.0,则MySQL将无法正常工作。
尝试安装 MySQL8。
安装后,使用服务命令启动mysql时,将显示"mysql:未重新编码的服务",并且无法启动。
***@***:~$ 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)
官方文档
解决方法:
在GitHub上找到个方法:https://github.com/Microsoft/WSL/issues/3631#issuecomment-465966498
采用的是安装 MySQL5.X 并将其升级为 MySQL8,然后修改脚本。
使用wget或者curl下载mysql包
MySQL储存库https://dev.mysql.com/downloads/repo/apt/复制链接
用crul下载包
***@***:~$ 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
安装下载的包。
***@***:~$ sudo dpkg -i ./mysql-apt-config_0.8.15-1_all.deb
使用 Tab 键将焦点设置为"确定",然后单击"确定"
选择5.7
确保mysql-5.7,并使用光标键将焦点移动到"确定",然后
sudo apt upate一下
***@***:~$ sudo apt update
安装
***@***:~$ sudo apt install -y mysql-server
启动一下MySQL服务试试
***@***:~$ sudo service mysql start
..
* MySQL Community Server 5.7.32 is started
没问题,可以看到服务启动了,接下来开始升级MySQL8.0版本
先停止服务
***@***:~$ sudo service mysql stop
..
* MySQL Community Server 5.7.32 is stopped
将MySQL安装更改为 MySQL8.0。
使用以下命令启动配置菜单。
***@***:~$ sudo dpkg-reconfigure mysql-apt-config
按 Tab 键确定焦点,然后按 Enter 前进。
使用光标选择mysql-8.0,使用 Tab 键将焦点设置为"确定"
使用光标选择"确定"以退出菜单。
更新到 MySQL8.0。
***@***:~$ sudo apt update
***@***:~$ sudo apt upgrade
此时运行mysql服务时,会显示错误消息。
***@***:~$ 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的所有进程。
***@***:~$ 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」
保存
启动mysql服务看看效果
***@***:~$ sudo service mysql start
..
* MySQL Community Server 8.0.22 is started
完美!!