无法在 WSL 上安装 mysql-server

Posted

技术标签:

【中文标题】无法在 WSL 上安装 mysql-server【英文标题】:Cannot install mysql-server on WSL 【发布时间】:2019-08-03 06:45:24 【问题描述】:

我在 WSL 上运行 Ubuntu 18.04,我正在尝试安装 mysql-server

我一直收到所附屏幕截图中显示的错误..我已经尝试了几次

apt remove --purge MySQL* apt-get 自动删除

apt-get 自动清理

sudo dpkg --configure -a

sudo apt-get install -f

sudo apt-get dist-upgrade

有什么想法吗?我不断出现同样的错误。

error output

【问题讨论】:

请将所有错误以可读的形式添加到问题中。该控制台输出是纯文本,因此无需添加图像 另外,您是否尝试过运行来自***.com/questions/54835516/… 的提示? 这能回答你的问题吗? windows subsystem install mysql server 【参考方案1】:

根据您的输出,它看起来像包 mysql-server 依赖于 mysql-server-5.7mysql-server-5.7 在以前的安装中未正确配置。因此您可以删除 mysql-server-5.7 及其包并重新安装。

删除 'mysql-server-5.7` 及其依赖项

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

重新安装 mysql-server

sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation

【讨论】:

【参考方案2】:

我遇到了完全相同的问题,我采取了这些步骤来解决它。 如果您想要快速的 TL;DR,只需跳到第 2 步(对于 MySQL 5.x)或第 4 步(对于 MySQL 8.x)。我只是将其他两个步骤作为很好地谈谈对我不起作用(但可能对其他人仍然有帮助):

第 1 步:

有些人对 sockets 有错误(就像管道一样,sockets 是使 mysql 服务器与其客户端之间的通信成为可能的东西),因此建议使用命令行选项 --protocl=TCP 或添加 @987654326 @mysqld.conf 使其使用 TCP 而不是这些套接字(这对于更快的本地连接更好)。但是当我尝试保存该配置文件(以“sudo nano”启动)时出现错误Error writing /etc/mysql/mysqld.conf.d/mysqld.conf: No such file or directory"。 我什至清理了所有东西并从头开始重新安装了mysql:

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

但我什至连那个配置文件都不存在。

第二步:

我看到运行mysqlmysql.exe: command not found,所以我认为主要问题是从PATH 中查找可执行文件。但是/etc/bin/mysql 存在并且/etc/bin 在PATH 中,所以我不知道为什么在运行mysql 时会出现command-not-found 错误。无论如何,我运行 /etc/bin/mysql 并给出了另一个错误: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 一不小心,我尝试sudo mysql,突然成功连接到mysql服务器并显示5.7版本。即,只添加 sudo 就可以了!我不是 Linux 专家,但我 [曾经] 认为当需要 sudo 时,我应该得到 permission error 而不是 mysql.exe: command not found

第三步:

我正在学习基于 MySQL 8 的教程。所以我认为可能升级到 MySQL 版本 8 可能会解决我的两个问题(事实证明,sudo 的必要性是根本不是问题,它必须正常存在,if not configured otherwise)。所以我按照here 中的说明进行操作。我将 MySQL APT 存储库添加到我的存储库列表中,然后 apt update & re-install the mysql-server。这一次,我得到一个询问版本的窗口,我选择版本 8。安装完成,sudo mysql --version 给出mysql Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL),但是,这一次即使sudo mysql 给出错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)。现在即使sudo 也无济于事!

第 4 步:

我检查了/var/log/mysql/error.log 中的错误日志,发现这个描述有问题:Linux Native AIO interface is not supported on this platform。所以我用谷歌搜索它,最后使用this very helpful comment from @jw-redpanda 解决了我在 WSL 上安装 MySQL 版本 8 的问题:

直接安装 MySQL 8.x 将无法在 WSL 1 上运行(这可能是我们在第 3 步失败的原因)。启动服务器有问题。以下步骤应该有效:

1.删除 MySQL 8.x:

sudo apt-get purge mysql-server mysql-client
sudo apt-get -y autoremove

2。更改为 MySQL 5.x 候选版本:

sudo dpkg -i mysql-apt-config_0.8.15-1_all.deb (如果没有,请从这里获取:https://dev.mysql.com/downloads/repo/apt/)

3.仔细检查 MySQL 的当前 apt 策略是 5.x:

sudo apt-get update

4.安装 MySQL 5.x

sudo service mysql start (this should work without error)

5.更改为 MySQL 8.x 候选版

sudo apt-get update
sudo apt policy mysql-server (it will show 8.x is the default candidate)

6.安装 MySQL 8.x

sudo apt-get -y install mysql-server

7.修改脚本,因为有错误

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.将系统表升级到 MySQL 8.x

sudo service mysql start (this should start without error)
sudo mysql -u root -p

希望这也对你有用!

【讨论】:

以上是关于无法在 WSL 上安装 mysql-server的主要内容,如果未能解决你的问题,请参考以下文章

安装 WSL2 后,Android Studio 模拟器无法在 Windows 11 上运行

无法在 WSL Ubuntu 18.04 上安装 R Shiny Server

WeGame导致WSL无法监听端口问题

无法在 Ubuntu 16.04 上安装 MySQL

如何从 Docker 容器内部访问在 WSL2 上运行的服务?

在 WSL 上进行基本安装后 localhost 无法正常工作