【问题标题】:How to connect to WSL mysql from Host Windows如何从主机 Windows 连接到 WSL mysql
【发布时间】:2019-06-19 23:36:13
【问题描述】:

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

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

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

【问题讨论】:

标签: mysql ubuntu windows-subsystem-for-linux


【解决方案1】:

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

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

然后一旦启动,打开 HeidiSql 并简单地连接到它,这里是我的例子

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

【讨论】:

  • 这个对我有用,不像其他答案
  • @cikatomo 您使用的是 WSL 1 还是 WSL 2?我无法让 127.0.0.1(或其他任何东西)在 WSL 1 上为我工作。
  • @Ryan 我正在使用 WSL1。我有一段时间没有使用这个设置了。几个月
  • @cikatomo 感谢您的回复。我终于发现我需要将 MySQL Workbench 从 6 升级到 8,因为 WSL 1 安装了 MySQL 8:stackoverflow.com/a/67963231/470749
  • 我在连接到 WSL MySQL 时遇到问题,这可行,但我需要禁用我的 windows MySQL80 服务并通过重新声明或 smt else 来停止它。
【解决方案2】:

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

对于 WSL1

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

Network type中,你应该选择MariaDb or MySQL(TCP/IP)而不是MySQL (SSH Tunnel)。 p>

对于 WSL2

检查此WSL github issue。保存 @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): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'mypassword'' at line 1
【解决方案3】:

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

我必须在 WSL 中获取 IP

并在 MySQL Workbench 中使用此 IP

【讨论】:

  • 对于任何未来的读者,您正在寻找flags=4163<UP,BROADCAST,RUNNING,MULTICAST> 配置
  • 我认为“9 Guy”的意思是ifconfig的输出通常会显示多个 IP地址,而确定使用哪个IP地址的方法是查找包含flags=4163<UP,BROADCAST,RUNNING,MULTICAST> 的行之后的行。
  • 另一种选择:wsl hostname -I 从 cmd 获取 WSL IP。
【解决方案4】:

默认情况下,MySql 只监听 127.0.0.1。如果您使用wsl hostname -IPermana 提到的)返回的 IP 地址进行连接,那么您需要更改 /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改成wsl hostname -I返回的IP。

使用:sudo service mysql restart重新启动 MySql

【讨论】:

    猜你喜欢
    • 2021-03-04
    • 2019-11-11
    • 2015-03-24
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 2019-07-16
    相关资源
    最近更新 更多