一、环境说明
- 物理机系统:windows 11
- 虚拟机系统:windows 11
- mysql 版本:8.4.7(免安装版 / 解压版)
- 网络模式:虚拟机 nat 模式(物理机 vmnet8 网卡 ip:192.168.11.1,虚拟机 ip:192.168.11.131)
- 核心结果:物理机 ping 不通虚拟机(防火墙禁 icmp),但可正常访问 mysql
二、核心操作步骤(3 大关键环节)
(一)设置 mysql 远程访问用户(授权物理机登录)
虚拟机打开「命令提示符」,无密码登录 mysql:
mysql -u root
设置 root 用户密码(替换为自定义强密码,如root@123456):
alter user 'root'@'localhost' identified by 'root@123456'; flush privileges;
创建远程访问用户并授权(允许所有 ip 通过 root 用户连接):
create user 'root'@'%' identified by 'root@123456'; grant all privileges on *.* to 'root'@'%' with grant option; flush privileges;
退出 mysql 命令行:
exit;
(二)创建 / 修改 my.ini 配置(解除本地监听限制)
定位 mysql 根目录(免安装版路径示例):
c:\yishu\mysql\mysql-8.4.7-winx64\
新建
my.ini文件(需显示文件扩展名,避免生成my.ini.txt),粘贴以下配置:[mysqld] basedir = c:\yishu\mysql\mysql-8.4.7-winx64 # 替换为实际mysql根目录 datadir = c:\yishu\mysql\mysql-8.4.7-winx64\data # 根目录下新建空data文件夹 port = 3306 bind-address = 0.0.0.0 # 监听所有ip,允许远程访问 [client] port = 3306 default-character-set = utf8mb4
重启 mysql 服务生效:
- 虚拟机按
win+r,输入services.msc打开服务 - 找到 mysql 服务(如
mysql或mysql84),右键「重启」
- 虚拟机按
(三)开放虚拟机防火墙 3306 端口(放行 mysql 流量)
- 虚拟机按
win+r,输入wf.msc打开「高级防火墙」 - 左侧选「入站规则」,右侧点击「新建规则」,按向导配置:
- 规则类型:端口 → 下一步
- 协议和端口:tcp + 特定本地端口(输入
3306)→ 下一步 - 操作:允许连接 → 下一步
- 配置文件:全选(域、专用、公用)→ 下一步
- 名称:mysql 3306 → 完成
三、物理机连接 mysql(两种方式)
方式 1:命令行连接
物理机打开「命令提示符」,输入连接命令:
mysql -h 192.168.11.131 -u root -p
输入步骤(一)设置的密码,出现
mysql>提示符即连接成功
方式 2:图形化工具连接(如 navicat)
- 新建 mysql 连接,配置如下:
- 连接名:自定义(如「虚拟机 mysql」)
- 主机:192.168.11.131
- 端口:3306
- 用户名:root
- 密码:自定义密码(如
root@123456)
- 点击「测试连接」,提示成功后即可使用
四、关键说明与问题排查
1. 核心逻辑总结
- 授权用户:给物理机办「门禁卡」(允许登录)
- 配置 my.ini:给 mysql 开「网络大门」(接收请求)
- 开放端口:给防火墙加「白名单」(放行流量)
2. 常见问题解决
- 连接超时:检查虚拟机 mysql 服务是否启动、3306 端口是否开放、
my.ini中bind-address是否为0.0.0.0 - 权限拒绝(access denied):确认远程用户
root@%已创建,密码输入正确 - ping 不通虚拟机:正常现象(防火墙禁 icmp),不影响 mysql 访问;需 ping 通则在防火墙启用「文件和打印机共享 (回显请求 - icmpv4-in)」规则
五、验证操作(可选)
连接成功后,可在物理机 mysql 命令行执行以下命令验证:
show databases; # 查看数据库 create database test_db; # 新建测试库 use test_db; create table test_table (id int, name varchar(20)); # 新建测试表 insert into test_table values (1, '物理机测试数据'); # 插入数据 select * from test_table; # 查询数据(需返回结果则验证成功)
到此这篇关于win11虚拟机mysql局域网连接的核心操作步骤的文章就介绍到这了,更多相关win11虚拟机mysql局域网连接内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论