我有一个全新的 WSL2,在安装了 Ubuntu 20.04 和 MySQL 的最新 Windows 10 (2004) 上运行,我可以从 Bash 访问它并获取状态 -
mysql> status
--------------
mysql Ver 8.0.20-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
Connection id: 10
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.20-0ubuntu0.20.04.1 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
UNIX socket: /var/run/mysqld/mysqld.sock
Binary data as: Hexadecimal
Uptime: 13 sec
接下来我想连接 MySQL Workbench。我得到的只是
Your connection failed for user 'root' to the MySQL server at 127.0.0.1:3306
Access denied for user 'root'@'localhost'
我的 WSL2 列表是 ---
PS C:\Users\gymdo> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
我的 WSL2 信息是 ---
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
Welcome to Ubuntu 20.04 LTS (GNU/Linux 4.19.104-microsoft-standard x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sat Jun 13 02:35:32 EDT 2020
System load: 1.97 Processes: 8
Usage of /: 0.4% of 250.98GB Users logged in: 0
Memory usage: 0% IPv4 address for eth0: 172.20.109.28
Swap usage: 0%
0 updates can be installed immediately.
0 of these updates are security updates.
我试过使用上面的 172.20.109.28 ---同样的错误
从 Windows 端来看 ---
Ethernet adapter vEthernet (WSL):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::c54a:f83c:a5f8:40b2%43
IPv4 Address. . . . . . . . . . . : 172.20.96.1
Subnet Mask . . . . . . . . . . . : 255.255.240.0
Default Gateway . . . . . . . . . :
我尝试使用上面的 172.20.96.1 ---同样的错误
一件奇怪的事情是 --- 当我尝试使用 root@localhost 的用户名而不是简单的 root 时,工作台会弹出“输入密码”弹出窗口。我很兴奋,但是当我将密码字段留空时,密码仍然失败:NO
我是一个被打败的人——我需要帮助。
我对 WSL 2 MySQL-Server 也有同样的问题;我通过将工作台连接配置中的127.0.0.1替换为localhost来修复它。
127.0.0.1 配置
本地主机配置
我希望它对某人有用!
经过更多搜索后,我发现可能需要授予访问权限的提示。在 WSL2 框中,我添加了一个新用户并授予了访问权限。
在此处查看页面下方的示例。
我现在可以通过 MySQL Workbench 连接用户:newguy和密码:来自 MySQL Workbench 的ratfink 。我无法授予对root的访问权限。我什至尝试以用户身份删除root并重新添加root但没有成功。我猜不应该与大自然母亲混为一谈。
问题是如何对 root 用户进行身份验证。默认情况下,这设置为使用 auth_socket 而不是 mysql_native_password。
以 root 用户身份登录到 wsl 中的 mysql 服务器并运行:
输出将列出每个用户的身份验证方法。
现在使用以下命令更改 root 用户的方法:
确保将“密码”更改为 root 用户的正确密码。
现在运行命令来更新更改:
现在再次运行命令以确保身份验证方法已更新:
现在输出应该显示 root 用户的身份验证方法是使用 mysql_native_password。您现在应该能够使用密码以 root 用户身份登录工作台。