无法从 Windows 桌面应用程序“MySQL Workbench”连接到 MySQL 数据库(在 WSL2 上运行)

Zac*_*zer 6 mysql-workbench windows-subsystem-for-linux

我在 Windows Subsystem for Linux(WSL2 版本)上设置了 MySQL。我对 MySQL 比较陌生,但我已经确认了以下内容:

  • 它正在运行(ps ax | grep mysqld返回一个值)
  • 它在默认主机上运行 127.0.0.1
  • 它在默认端口上运行 3306

要登录到 mysql shell,我使用命令sudo mysql -u root -p. 没有 sudo,我无法登录 shell。

我认为这个问题与运行 MySQL 服务的主机有关,但我不知道如何更改它并正确连接。下面是 MySQL Workbench 中连接设置的屏幕截图。

在此处输入图片说明

下面是我在使用显示的设置和我的root用户密码时遇到的错误。

连接到 mysql 工作台 2

在此处输入图片说明

Zac*_*zer 8

事实证明,这与 WSL 完全无关,而是与 MySQL 用户的身份验证方法有关。

从 MySQL 5.5.10 版本开始,用户可以使用auth_socket 身份验证。就我而言,我使用 Linuxapt存储库来配置和安装 MySQL,并将其设置为默认身份验证方法,如以下命令的输出所示:

SELECT user,authentication_string,plugin,host FROM mysql.user;
Run Code Online (Sandbox Code Playgroud)

MySQL Workbench 不支持这种类型的身份验证,因此,您必须恢复到旧的身份验证方法mysql_native_password.

为此,请在以root或您尝试连接到 MySQL Workbench 的任何用户身份登录时运行以下命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';
Run Code Online (Sandbox Code Playgroud)

这样做之后,MySQL 工作台连接正常。