如何从主机 Windows 连接到 WSL mysql

jos*_*uel 12 mysql ubuntu windows-subsystem-for-linux

我正在尝试将 HeidiSql 从主机连接到我的 WSL Mysql,但我无法连接它

错误“无法连接到'127.0.0.1'上的Mysql服务器”

也尝试过SSH,但无法连接到服务器

在此处输入图片说明

小智 13

默认情况下,MySql 仅侦听 127.0.0.1。如果您使用返回的 IP 地址进行连接(如Permanawsl hostname -I提到的),那么您需要更改 /etc/mysql/mysql.conf.d/mysqld.cnf 以侦听所有 IP 或您的特定 IP。

通过在 Ubuntu 实例中键入以下内容来编辑您的 MySql 配置: sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

更改线路: bind-address = 127.0.0.1

到: bind-address = 0.0.0.0

或更改0.0.0.0为返回的IP wsl hostname -I

使用以下命令重新启动 MySql:sudo service mysql restart


fan*_*ing 8

由于您的问题是在WSL2 发布之前提出的,我假设您使用的是 WSL1。

对于 WSL1

您可以直接从 Windows 访问 WSL1 MySQL,但您尝试以错误的方式访问。

网络类型中,您应该选择MariaDb 或 MySQL(TCP/IP),而不是MySQL (SSH Tunnel)

对于 WSL2

检查这个WSL github 问题。保存@edwindijas的powershell脚本并由管理员执行。如果仍然无法访问MySQL并获取access denied for user ... <you-computer-name>.mshome.net,则需要允许该用户从此访问host

例如:假设 root,您需要在 mysql cli 中执行以下命令:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%<you-computer-name>.mshome.net' IDENTIFIED BY '<password>';

或者允许 root 用户从任何主机访问 WSL2 MySQL:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';

  • `ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行“IDENTIFIED BY 'mypassword'' 附近使用的正确语法” (7认同)

Fil*_*Fil 5

至于我,也在使用 WSL 来制作基于 Web 的应用程序

首先确保 mysql 正在 WSL 上运行,例如sudo service mysql start

然后一旦开始,打开 HeidiSql 并简单地连接到它,这是我的示例

在此输入图像描述

确保 IP 地址是 127.0.0.1,不是任何 IP,也不是您用于连接互联网的 IP


小智 5

我还在 WSL 上托管 mysql-server 并在 Windows 上运行 MySQL 工作台。

我必须在 WSL 中获取 IP 如果配置

并在 MySQL Workbench 中使用此 IP 在此处输入图片说明

  • 另一种选择:`wsl hostname -I` 从 cmd 获取 WSL IP。 (3认同)