从宿主机(Windows)通过 NAT 模式连接虚拟机(Ubuntu)中的 MySQL

张开发
2026/4/6 4:03:18 15 分钟阅读

分享文章

从宿主机(Windows)通过 NAT 模式连接虚拟机(Ubuntu)中的 MySQL
宿主机NAT 模式连接虚拟机 MySQL 完整记录环境Windows 宿主机 VMware WorkstationUbuntu 虚拟机NAT 网络目标从宿主机通过本地网络连接虚拟机内的 MySQL并允许 Java 等程序远程访问。1. 查看本地网络 IPWindows 宿主机WINR 打开 CMD输入ipconfigLinux 虚拟机CTRLALTT 打开终端输入ifconfig记录下双方的 IPv4 地址例如虚拟机 IP 为192.168.31.16。2. 测试网络连通性ping在宿主机上 ping 虚拟机 IPping 192.168.31.16同样可在虚拟机内 ping 宿主机 IP。如果 ping 不通检查虚拟机网络适配器是否为 NAT 模式并关闭防火墙测试。3. 测试 MySQL 端口3306是否可达使用telnet命令Windows 需在“启用或关闭 Windows 功能”中安装 Telnet 客户端telnet 192.168.31.16 3306若出现黑屏或提示连接成功说明端口开放若提示无法连接继续后续步骤。mysql可能处于本地监听状态成功4. 检查虚拟机内 MySQL 服务状态sudo systemctl status mysql确保状态为active (running)。5. 查看 MySQL 监听的端口和地址sudo netstat -tulnp | grep 3306初始输出示例tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1234/mysqld表示只监听本地回环地址127.0.0.1无法远程访问。6. 修改 MySQL 配置文件允许监听所有网络接口编辑配置文件sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf找到以下行bind-address 127.0.0.1修改为bind-address 0.0.0.0保存退出CtrlX→Y→Enter。然后重启 MySQLsudo systemctl restart mysqlsudo systemctl status mysql再次执行sudo netstat -tulnp | grep 3306确认变为tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN ...7. 检查 MySQL 用户权限登录 MySQLsudo mysql查询用户表SELECT host, user FROM mysql.user;通常root用户的host为localhost表示只允许本地登录。8. 创建远程访问用户授予远程权限注意以下命令已修正原笔记中的语法错误。测试环境可使用简单密码生产环境请务必加强。在 MySQL 中执行sql-- 降低密码策略仅测试环境SETGLOBALvalidate_password.policyLOW;SETGLOBALvalidate_password.length4;-- 创建用户允许从 192.168 网段连接也可用 % 允许任意 IPCREATEUSERroot192.168.%IDENTIFIEDBY123456;-- 授予所有权限GRANTALLPRIVILEGESON*.*TOroot192.168.%WITHGRANTOPTION;-- 刷新权限FLUSHPRIVILEGES;--如果想允许任意 IP 访问将 root192.168.% 替换为 root%。9.从宿主机远程连接测试退出 MySQL 后在宿主机 CMD 中执行需安装 MySQL 客户端mysql-h192.168.31.16-u root-p输入密码 123456若成功进入 MySQL 命令行则表示远程连接配置成功。10. 在 Java 程序中连接远程 MySQLStringurljdbc:mysql://192.168.31.16:3306/你的数据库名?useSSLfalseserverTimezoneUTC;Stringuserroot;Stringpassword123456;ConnectionconnDriverManager.getConnection(url,user,password);

更多文章