大学项目:如何让多设备的Java可执行Jar远程访问数据库?
实现Java Jar应用远程访问共享数据库的详细步骤
嗨,刚接触这块确实容易摸不着头脑,咱们一步步来搞定这个问题,让你的Jar应用能让所有人共用同一个数据库存储登录信息~
第一步:准备可远程访问的数据库环境
你现在用的本地MySQL默认只能自己电脑访问,得把它改成允许远程连接,或者换用云数据库(新手推荐免费的云服务,不用自己折腾服务器)。这里给你两种方案:
方案A:开放本地MySQL的远程访问权限
修改MySQL配置文件:
- Windows:找到
my.ini(一般在MySQL安装目录的bin或my文件夹里),找到bind-address行,改成bind-address = 0.0.0.0(允许所有IP访问)。 - Linux/Mac:找到
my.cnf(一般在/etc/mysql/目录下),同样修改bind-address为0.0.0.0。 - 修改后重启MySQL服务:Windows在系统服务里重启,Linux用
sudo systemctl restart mysql命令。
- Windows:找到
创建远程访问用户并授权:
打开MySQL命令行或Workbench,执行以下SQL(替换成你的用户名、密码和数据库名):-- 创建允许远程访问的用户(%代表所有IP,也可以指定具体IP段比如192.168.1.%) CREATE USER 'remote_user'@'%' IDENTIFIED BY '你的强密码'; -- 授权该用户访问你的项目数据库的必要权限(比如增删改查) GRANT SELECT, INSERT, UPDATE ON 你的数据库名.* TO 'remote_user'@'%'; -- 刷新权限让设置生效 FLUSH PRIVILEGES;开放防火墙与端口映射:
- Windows:打开Windows Defender防火墙,新建入站规则,允许3306端口(MySQL默认端口)的TCP连接。
- Linux:执行
ufw allow 3306/tcp命令开放端口。 - 家庭网络用户:还需要在路由器后台设置端口转发,把3306端口映射到你的电脑本地IP(具体操作看路由器品牌,一般在「端口转发」模块)。
方案B:使用云数据库(更稳定,无需维护服务器)
比如阿里云RDS、腾讯云CDB,或者免费的PlanetScale、Supabase:
- 注册账号后创建MySQL实例,控制台会提供远程连接地址、端口、用户名、密码。
- 记得在云控制台配置IP白名单,把所有用户的IP加进去,测试阶段可暂时设为
0.0.0.0/0(正式环境别这么干)。
第二步:修改Java应用的数据库连接配置
找到项目里的JDBC连接代码,把本地连接字符串改成远程地址:
原来的本地连接示例:
String url = "jdbc:mysql://localhost:3306/你的数据库名?useSSL=false&serverTimezone=UTC"; String user = "root"; String password = "本地密码";
修改后的远程连接:
如果是本地开放的MySQL,把localhost换成你的电脑公网IP(百度「我的IP」就能查到):
String url = "jdbc:mysql://你的公网IP:3306/你的数据库名?useSSL=false&serverTimezone=UTC"; String user = "remote_user"; // 刚才创建的远程用户 String password = "远程用户密码";
如果是云数据库,直接用控制台提供的地址:
String url = "jdbc:mysql://云数据库地址:端口/你的数据库名?useSSL=true&serverTimezone=UTC"; // 云数据库一般要求开启SSL String user = "云数据库用户名"; String password = "云数据库密码";
⚠️ 注意:MySQL 8.0及以上版本的驱动类是com.mysql.cj.jdbc.Driver,旧版本是com.mysql.jdbc.Driver,别写错了!
第三步:打包包含依赖的可执行Jar
你的Jar需要包含JDBC驱动才能在别人电脑上正常运行,所以打包时要把依赖一起打包进去:
如果你用Maven:
在pom.xml里添加maven-shade-plugin插件:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.4.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <!-- 替换成你的主类全路径,比如com.yourproject.LoginApp --> <mainClass>你的主类完整路径</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>
执行mvn package命令,生成的可执行Jar在target目录下。
如果你用Gradle:
在build.gradle里添加shadow插件:
plugins { id 'java' id 'com.github.johnrengelman.shadow' version '7.1.2' } shadowJar { // 替换成你的主类全路径 mainClassName = '你的主类完整路径' }
执行./gradlew shadowJar命令,生成的Jar在build/libs目录下。
第四步:测试远程连接
- 先在另一台电脑上运行Jar,或者用MySQL Workbench连接远程数据库,确认能正常读写数据。
- 让其他用户运行Jar,测试登录信息是否能正常存入共享数据库。
安全小提示
- 绝对不要用
root用户进行远程访问,一定要创建专门的远程用户,只给必要的权限(比如只给SELECT, INSERT, UPDATE,别给ALL PRIVILEGES)。 - 密码一定要设置强密码,避免被暴力破解。
- 云数据库一定要配置IP白名单,只允许信任的IP访问,不要随便开放给所有人。
- 本地开放远程访问后,测试完成可关闭端口映射或限制允许访问的IP范围。
内容的提问来源于stack exchange,提问作者hiro228
相关产品推荐
相关产品推荐

