You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

大学项目:如何让多设备的Java可执行Jar远程访问数据库?

实现Java Jar应用远程访问共享数据库的详细步骤

嗨,刚接触这块确实容易摸不着头脑,咱们一步步来搞定这个问题,让你的Jar应用能让所有人共用同一个数据库存储登录信息~

第一步:准备可远程访问的数据库环境

你现在用的本地MySQL默认只能自己电脑访问,得把它改成允许远程连接,或者换用云数据库(新手推荐免费的云服务,不用自己折腾服务器)。这里给你两种方案:

方案A:开放本地MySQL的远程访问权限

  1. 修改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命令。
  2. 创建远程访问用户并授权:
    打开MySQL命令行或Workbench,执行以下SQL(替换成你的用户名、密码和数据库名):

    -- 创建允许远程访问的用户(%代表所有IP,也可以指定具体IP段比如192.168.1.%)
    CREATE USER 'remote_user'@'%' IDENTIFIED BY '你的强密码';
    -- 授权该用户访问你的项目数据库的必要权限(比如增删改查)
    GRANT SELECT, INSERT, UPDATE ON 你的数据库名.* TO 'remote_user'@'%';
    -- 刷新权限让设置生效
    FLUSH PRIVILEGES;
    
  3. 开放防火墙与端口映射:

    • 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目录下。

第四步:测试远程连接

  1. 先在另一台电脑上运行Jar,或者用MySQL Workbench连接远程数据库,确认能正常读写数据。
  2. 让其他用户运行Jar,测试登录信息是否能正常存入共享数据库。

安全小提示

  • 绝对不要用root用户进行远程访问,一定要创建专门的远程用户,只给必要的权限(比如只给SELECT, INSERT, UPDATE,别给ALL PRIVILEGES)。
  • 密码一定要设置强密码,避免被暴力破解。
  • 云数据库一定要配置IP白名单,只允许信任的IP访问,不要随便开放给所有人。
  • 本地开放远程访问后,测试完成可关闭端口映射或限制允许访问的IP范围。

内容的提问来源于stack exchange,提问作者hiro228

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:42:15