从 WSL 连接 Windows 机器中的 MySQL 服务器
从 WSL 连接 Windows 机器中的 MySQL 服务器
最初发表于dataqoil.com。
这是什么意思?简单来说,我们如何从 WSL 连接到托管在 Windows 中的 MySQL 服务器。这听起来很容易,但让我告诉你,这不是!!!!
我试图(从 WSL)连接到我在使用 Airflow 时安装在 Windows 机器上的本地 MySQL,因为我的 Airflow 安装在 WSL 中。但我花了很长时间才找到最好的方法。我希望它也能帮助你。
WSL 中的 MySQL 客户端
首先使用下面的命令在 WSL 中安装 MySQL 客户端,一旦我们在 WSL 终端中输入mysql就可以看到。
sudo apt install mysql-client-core-8.0 # version 8.0.27-0ubuntu0.20.04.1, or
sudo apt install mariadb-client-core-10.3 # version 1:10.3.31-0ubuntu0.20.04.1
进入全屏模式 退出全屏模式
对我来说,我做了第一个。
查找WSL的IPv4地址
-
转到设置 -> 网络和 Internet -> 状态 -> 查看硬件和连接属性。 查找名称 vEthernet (WSL)。它通常位于底部。
-
我的样子如下。但我已经遮蔽了地址。
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--aWtsizJ4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://q-viper.github. io/assets/wsl_mysql/ipv4_address.png)
[
](https://res.cloudinary.com/practicaldev/image/fetch/s---ruVovIG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://q-viper.github .io/assets/wsl_mysql/ipv4_wsl.png)
现在尝试使用以下命令从 WSL 连接到 MySQL:
mysql -u wsl_root -p -h 172.24.xxx.xxx
进入全屏模式 退出全屏模式
请记住,在上面的命令中 xxx 只是一个占位符。此外,root只是我们尝试登录的用户名。 我们现在使用上面的命令会得到一个错误,我们会修复它。
在 MySQL 中创建新用户以从 WSL 进行调用
CREATE USER 'wsl_root'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'wsl_root'@'localhost' WITH GRANT OPTION;
CREATE USER 'wsl_root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'wsl_root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
进入全屏模式 退出全屏模式
在上面的查询中,
-
wsl_root是我们将在 WSL 中使用的用户名。localhost是 MySQL 所在的地址,password是密码。 :) -
我们已向该用户授予所有权限,它将只是另一个管理员。
来自 WSL
现在运行命令mysql -u wsl_root -p -h 172.24.xxx.xxx并在询问后输入密码,我们可以连接到 MySQL 服务器。
参考文献
- https://stackoverflow.com/questions/1559955/host-xxx-xx-xxx-xxx-is-not-allowed-to-connect-to-this-mysql-server
更多推荐

所有评论(0)