首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从windows访问wsl中的docker mysql

要从 Windows 访问运行在 WSL(Windows Subsystem for Linux)中的 Docker 容器中的 MySQL 数据库,你需要确保以下几点:

  1. MySQL 容器正在运行
  2. MySQL 容器的端口已映射到 WSL 的端口
  3. MySQL 用户允许从外部主机连接
  4. 正确配置 Windows 和 WSL 之间的网络连接

以下是详细的步骤:

1. 启动 MySQL 容器并映射端口

假设你已经在 WSL 中安装了 Docker,并且有一个 MySQL Docker 镜像,你可以使用以下命令启动 MySQL 容器,并将容器的 MySQL 端口(默认是 3306)映射到 WSL 的端口。

代码语言:javascript
复制
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:latest

在这个命令中:

  • --name mysql-container:为容器指定一个名称。
  • -e MYSQL_ROOT_PASSWORD=my-secret-pw:设置 MySQL root 用户的密码。
  • -p 3306:3306:将容器的 3306 端口映射到 WSL 的 3306 端口。
  • -d mysql:latest:在后台运行 MySQL 容器,使用最新的 MySQL 镜像。

2. 检查 MySQL 容器状态

确保 MySQL 容器正在运行:

代码语言:javascript
复制
docker ps

你应该能看到类似以下的输出:

代码语言:javascript
复制
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                    NAMES
xxxxxxxxxxxx   mysql:latest   "docker-entrypoint.s…"   xx minutes ago   Up xx minutes   0.0.0.0:3306->3306/tcp   mysql-container

3. 配置 MySQL 用户权限

默认情况下,MySQL root 用户只能从 localhost 连接。你需要创建一个允许从外部主机连接的用户,或者修改 root 用户的权限。

进入 MySQL 容器

代码语言:javascript
复制
docker exec -it mysql-container mysql -u root -p

输入你在启动容器时设置的 root 密码。

创建一个允许外部连接的用户

代码语言:javascript
复制
CREATE USER 'youruser'@'%' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

或者,修改 root 用户的权限

代码语言:javascript
复制
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'my-secret-pw';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

4. 获取 WSL 的 IP 地址

在 WSL 中运行以下命令获取 WSL 的 IP 地址:

代码语言:javascript
复制
hostname -I

你会得到类似 172.20.240.1 的 IP 地址。

5. 从 Windows 连接到 WSL 中的 MySQL 容器

现在,你可以从 Windows 使用 MySQL 客户端工具(如 mysql 命令行工具、MySQL Workbench 或其他数据库管理工具)连接到运行在 WSL 中的 MySQL 容器。

使用命令行工具连接

打开 Windows 命令提示符或 PowerShell,运行以下命令:

代码语言:javascript
复制
mysql -h <WSL_IP_ADDRESS> -P 3306 -u youruser -p

在这个命令中:

  • <WSL_IP_ADDRESS>:替换为你在步骤 4 中获取的 WSL IP 地址。
  • -P 3306:指定端口号。
  • -u youruser:指定 MySQL 用户名。
  • -p:提示输入密码。

6. 防火墙和网络配置

确保 Windows 防火墙允许外部连接到 3306 端口。如果你在 WSL 中运行 Docker 容器,还需要确保 WSL 的防火墙规则允许外部访问 3306 端口。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券