如何从 Windows 主机连接到 WSL Ubuntu 上的 MySQL?

如何从 Windows 主机连接到 WSL Ubuntu 上的 MySQL?

我正在尝试连接到我的 WSL2 Ubuntu 24.04 上的 MySQL 服务器。

我在Ubuntu里面按以下方式创建了一个用户:

CREATE USER 'myuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL ON cloud.* TO 'myuser'@'localhost'

我甚至尝试使用通配符创建用户%

CREATE USER 'myuser'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL ON cloud.* TO 'myuser'@'%'

编辑:我甚至尝试创建另一个用户,0.0.0.0因为我读到它是用于远程访问,但这也不起作用:

CREATE USER 'myuser'@'0.0.0.0' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL ON cloud.* TO 'myuser'@'0.0.0.0'

然后我尝试从 MySQL Workbench 连接到服务器,详细信息如下:

Connection method: Standard (TCP/IP)
Hostname: 172.26.15.15
Port: 3306
Username: myuser
Password: password

但我明白:

Your connection attempt failed for user 'myuser' to the MySQL server at 172.26.15.15:3306

172.26.15.15是我的 Ubuntu IP,我甚至可以从 Windows 主机 ping 它

我究竟做错了什么?

答案1

我找到了答案-首先我需要编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf并更改显示bind-address以允许使用远程连接的行0.0.0.0

bind-address 0.0.0.0 #originally it was 127.0.0.1

但我仍然收到连接错误。但这次,我收到了一个新错误,告诉我被拒绝的主机是<PC_NAME>.mshome.net。这意味着 WSL2 实例将主机视为<PC_NAME>.mshome.net

然后我在 MySQL 中创建了一个新用户并授予他权限:

CREATE USER 'myuser'@'DESKTOP-SMF8KJ1.mshome.net' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL ON schema.* TO 'myuser'@'DESKTOP-SMF8KJ1.mshome.net';

就这样,我能够从 Windows 主机连接到 WSL MySQL 服务器

相关内容