如何通过Java/JDBC连接远程MySQL数据库?局域网场景实操咨询
通过JDBC连接局域网内远程MySQL的最优方案
嘿,这个问题我太熟悉了!咱们直接说重点:你提到的用IP地址写JDBC URL的方式完全可行,这就是局域网内连接远程MySQL的最优方式,根本不需要用RMI。下面给你拆解细节,确保连接顺畅:
一、先确认MySQL允许远程访问(关键步骤)
默认情况下,MySQL只允许本地主机(127.0.0.1)访问,所以得先在系统A的MySQL里做两件事:
- 给数据库用户授权远程访问:
打开系统A的MySQL命令行,执行授权语句(比如允许root用户从192.168.20.xxx整个网段访问):
如果你想让root从任何IP访问(局域网内没问题),可以把GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'192.168.20.%' IDENTIFIED BY 'root'; FLUSH PRIVILEGES;192.168.20.%改成%,但生产环境不建议这么做。 - 开放系统A的防火墙端口:
确保系统A的防火墙允许3306端口(MySQL默认端口)的入站请求,不然局域网内的系统B根本连不上。
二、你的JDBC URL写法是正确的
你写的这段代码完全可以正常工作:
Connection con=DriverManager.getConnection("jdbc:mysql://192.168.20.10:3306/mydb?zeroDateTimeBehavior=convertToNull","root","root");
不过可以加几个实用参数优化体验,比如避免SSL警告、确保字符编码正确:
Connection con = DriverManager.getConnection( "jdbc:mysql://192.168.20.10:3306/mydb?zeroDateTimeBehavior=convertToNull&useSSL=false&useUnicode=true&characterEncoding=utf8", "root", "root" );
三、为什么不需要RMI?
RMI(Java远程方法调用)是用来让Java程序调用另一台机器上Java程序的方法,和数据库连接完全是两码事。JDBC本身就是专门设计用来和数据库服务器直接通信的协议,不需要经过RMI这种中间层,用RMI反而会增加复杂度,完全没必要。
总结
局域网内连接远程MySQL的最优流程就是:
- 给MySQL用户授权远程访问
- 开放系统A的3306端口
- 用带系统A IP的JDBC URL直接连接
内容的提问来源于stack exchange,提问作者pritam parab
相关产品推荐
相关产品推荐

