mysql-workbench - 无法从 Windows 桌面应用程序“MySQL Workbench”连接到 MySQL 数据库(在 WSL2 上运行)
问题描述
我在适用于 Linux 的 Windows 子系统(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
用户密码时遇到的错误。
解决方案
事实证明,这根本与 WSL 无关,而是 MySQL 用户的身份验证方法。
从 MySQL 5.5.10 版开始,用户可以使用auth_socket authentication。就我而言,我使用 Linuxapt
存储库来配置和安装 MySQL,并将其设置为默认身份验证方法,如以下命令的输出所示:
SELECT user,authentication_string,plugin,host FROM mysql.user;
MySQL Workbench 不支持这种类型的身份验证,因此,您必须恢复到旧的身份验证方法,mysql_native_password
.
为此,请在以 身份登录时运行以下命令root
,或者以任何您尝试连接到 MySQL Workbench 的用户身份运行以下命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';
之后,MySQL 工作台连接正常。
推荐阅读
- jsdoc - 使用 JSDoc 记录此内容
- ruby - Heroku - 更新到 Heroku-20 后的应用程序错误
- python - RasterioIOError:尝试创建新的 tiff 文件失败:权限被拒绝
- javascript - 如何在不同的 Route 或 Page 上刷新 livewire 组件?
- css - 了解最小颜色:每个@media 请求 3 个参数
- go - 检查 IsZero 时使用反射恐慌按名称获取字段
- angular - Angular 实现 Observable
作为同步字符串 [] 数组 - flutter - 从父小部件更新 ModalBottomSheet 内按钮的可见性
- sonarqube - 使用 sonaQube 时,什么情况会停止 Azure devOps 中管道的执行
- botframework - 开发bot时luis中的authoringKey和endpointKey有什么区别?