在WSL中连接windows宿主机的mysql

本文介绍了如何在MySQL安装在WSL中时,允许Windows系统通过127.0.0.1或localhost连接,包括设置远程连接权限和查询WindowsIP地址的方法。

这种情况是不能使用127.0.0.1或者localhost连接的,反过来如果Mysql安装在wsl中,则可以在windows上用127.0.0.1或localhost连接。

在已经设置好mysql的连接权限需开启远程连接和密码连接

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

在windows上使用ipconfig命令查询下ip,一般就是192.168.···那个,就可以成功连接了。

WSL2 中安装 MySQL 并通过 Navicat 远程连接后,**WSL 中运行的项目可以使用该数据库**。这是因为 WSL2 本质上是一个完整的 Linux 子系统,支持运行标准的 Linux 应用程序和服务,包括 MySQL 数据库。只要配置得当,WSL2 中的项目可以通过本地网络接口访问 MySQL 数据库。 ### 配置步骤概览 1. **MySQL 用户权限配置** MySQL 8.* 版本默认未设置 root 密码,因此需要手动设置密码并赋予远程访问权限。可以使用以下命令为 root 用户设置密码并启用远程访问: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES; ``` 同时,也可以创建一个专门用于远程访问的用户,例如 `test`: ```sql CREATE USER 'test'@'%' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON *.* TO 'test'@'%'; ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; FLUSH PRIVILEGES; ``` 这些操作确保了远程连接的用户具备访问数据库的权限 [^1]。 2. **MySQL 配置文件修改** 为了允许远程连接,需要修改 MySQL 的配置文件(通常位于 `/etc/mysql/mysql.conf.d/mysqld.cnf`),将 `bind-address` 设置为 `0.0.0.0`,以允许所有 IP 地址的连接: ```ini bind-address = 0.0.0.0 ``` 修改完成后,重启 MySQL 服务: ```bash sudo service mysql restart ``` 3. **防火墙设置** 确保 WSL2 所在的 Windows 系统防火墙允许 3306 端口通过,以便远程客户端(如 Navicat)能够访问 MySQL 服务。 4. **Navicat 连接配置** 在 Navicat 中,创建一个新的 MySQL 连接,输入 WSL2 的 IP 地址(可以通过 `hostname -I` 命令获取),并填写之前设置的用户名和密码(如 root 或 test)。测试连接成功后,即可通过 Navicat 管理数据库 [^2]。 5. **项目连接数据库** WSL2 中运行的项目可以通过本地网络接口(通常是 `127.0.0.1` 或 `localhost`)连接 MySQL 数据库。如果项目部署在 WSL2 内部,则使用 `localhost` 即可;如果项目部署在 Windows 上,则需要使用 WSL2 的 IP 地址来连接数据库。 ### 示例:项目连接 MySQL 的配置 假设项目使用 Python 和 `pymysql` 库连接数据库,配置如下: ```python import pymysql connection = pymysql.connect( host='localhost', # 如果项目运行在 WSL2 内部 # host='172.x.x.x', # 如果项目运行在 Windows 上,需使用 WSL2 的 IP 地址 user='root', password='your_password', database='your_database', port=3306 ) cursor = connection.cursor() cursor.execute("SELECT VERSION()") data = cursor.fetchone() print(f"Database version: {data}") ``` ### 注意事项 - **网络配置**:确保 WSL2 和项目运行环境处于同一网络环境中,以保证连接的稳定性。 - **安全性**:开放远程访问权限时,建议使用专用账户并限制访问权限,避免使用 `GRANT ALL PRIVILEGES` 以减少安全风险。 - **端口映射**:如果使用 Docker 安装 MySQL,需要将容器的 3306 端口映射到宿主机的某个端口(如 3307),并在连接时指定该端口 [^4]。 通过以上配置,WSL2 中的项目可以顺利使用 MySQL 数据库,并通过 Navicat 进行远程管理。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值