Java应用程序:在不同的计算机上访问数据库

Java应用程序:在不同的计算机上访问数据库,java,mysql,database,mysql-workbench,remote-server,Java,Mysql,Database,Mysql Workbench,Remote Server,我有一个使用JavaSE的应用程序,在编写代码时,我在localhost上安装了mysql workbench,一切正常。现在我必须分发jar文件,以便人们可以使用它。但当我尝试访问数据库时,它显示连接错误。在数据库路径中,我将localhost替换为数据库所在计算机的ip。谁能帮我一下吗 非常感谢 如您所知,对于JDBC,通常需要在连接字符串中指定主机 正如您所知,您通常在Class.forName()中指定驱动程序,并在Java类路径中指定驱动程序的.jar目录 您可能正在使用MySql/J

我有一个使用JavaSE的应用程序,在编写代码时,我在localhost上安装了mysql workbench,一切正常。现在我必须分发jar文件,以便人们可以使用它。但当我尝试访问数据库时,它显示连接错误。在数据库路径中,我将localhost替换为数据库所在计算机的ip。谁能帮我一下吗

非常感谢

  • 如您所知,对于JDBC,通常需要在连接字符串中指定主机

  • 正如您所知,您通常在Class.forName()中指定驱动程序,并在Java类路径中指定驱动程序的.jar目录

  • 您可能正在使用MySql/J连接器——我相信这就是您的客户机需要与应用程序一起部署的全部内容

  • 您还需要确保mySql端口(默认3306)是打开的

  • Mysql“用户”是基于每台主机定义和授权的。您还需要确保在“Users”mysql表中正确设置了该选项

  • 确保应用程序记录所有可用的异常信息。请在此发布任何特定的错误消息

  • “希望有帮助

    附言:
    与“mysql工作台”唯一相关的是,当您使用mysql工作台在本地运行应用程序时,应用程序恰好工作,对吗?如果是这样,它可能不是这个问题的好标签…

    以管理员用户身份在数据库上运行查询

    GRANT ALL ON db1 TO 'jeffrey'@'%';
    

    假设
    db1
    是您的模式,
    jeffrey
    是您想要访问的用户。

    您可以发布完整的错误消息吗???您需要能够ping或telnet数据库服务器以确保您可以连接,你试过了吗?检查远程主机的数据库访问权限。@Santosh是的,我想这就是用户窗口中的问题,它显示localhost。。。如何从任何ip访问它?@Qwe-非常好的建议。Koool-您应该能够“telnet YOUR-HOST 3306”来验证客户端和远程MySql服务器之间的MySql端口是否打开。1。检查2。Class.forName(“com.mysql.jdbc.Driver”);3.完成4。如果我的应用程序con=DriverManager.getConnection(“jdbc:mysql://ip/db1?“+”user=jeffrey&password=“);它应该能正常工作吗?从上面的评论中,我试着ping,它说请求失败了,解决方法是什么?你的意思是你不能ping有数据库的机器?