当前位置: 首页 > 知识库问答 >
问题:

JDBC与远程MySQL数据库的连接失败;

颛孙森
2023-03-14

我在连接到公共托管的静态IP mysql服务器时遇到了一个奇怪的问题。

我能够使用MySQL Workbench成功连接到服务器,也可以通过SSH连接到本地远程服务器。但是从jdbc连接器连接到mysql服务器的尝试(通过NetBeans和本地部署的代码都失败)。在查看日志时,代码正在尝试与远程服务器连接,考虑到用户凭据是本地用户而不是远程用户的。因此用户存在于远程,但java在尝试连接时会考虑user@localhost。确切的错误显示为:

原因:java。sql。SQLException:用户“user”的访问被拒绝@'c-24-130-52-20。hsd1。康卡斯特。net(使用密码:YES)访问com.mysql。jdbc。SQLError。com上的createSQLException(SQLError.java:1078)~[mysql-connector-java-5.1.27.jar:na]。mysql。jdbc。迈斯克利奥。checkErrorPacket(MysqlIO.java:4237)~[mysql-connector-java-5.1.27.jar:na]。mysql。jdbc。迈斯克利奥。com上的checkErrorPacket(MysqlIO.java:4169)~[mysql-connector-java-5.1.27.jar:na]。mysql。jdbc。迈斯克利奥。checkErrorPacket(MysqlIO.java:928)~[mysql-connector-java-5.1.27.jar:na]。mysql。jdbc。迈斯克利奥。proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1750)~[mysql-connector-java-5.1.27.jar:na]

我的连接字符串是:

jdbc: mysql://user:password@W.X.Y.Z/

有人能建议如何提及该用户,以便java将其视为远程用户,而不是我机器上的本地用户吗?

共有2个答案

任云瀚
2023-03-14

这里的问题是:

当MySQL Workbench连接时,连接是成功的,因为用户userName@W.X.Y.Z可以完全访问数据库。但是当我使用java连接时,它试图连接的用户userName@JavaServerIP,而不是userName@W.X.Y.Z。所以连接尝试失败,因为userName@JavaServerIP没有访问权限。在mysql服务器上授予此类用户对数据库的访问权限为我解决了问题。这是帮助我解决这个问题的命令:

GRANT ALL PRIVILEGES ON my_database.* TO 'my_user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
黄沈浪
2023-03-14

我不知道这是否能解决您的问题,但您最好使用提供的API进行连接,而不是手动构建连接字符串。

这将使出错变得更难(这将很难诊断),并使参数替换更容易:

String username = "testuser";
String password = "test123";
String url = "jdbc:mysql://ip-address/databaseName";
Class.forName ("com.mysql.jdbc.Driver").newInstance ();
Connection conn = DriverManager.getConnection (url, username, password);
 类似资料:
  • 连接失败,出现此异常。我无法追踪到底发生了什么? 另外,getconnection之后的db2diag.log是:

  • 问题内容: 我刚刚在网络托管服务上设置了MySQL数据库,并尝试使用以下php远程连接至该数据库: 我对php和MySQL还是很陌生,我不了解几件事。我已将上面的代码保存在文件中(称为demo.html),并尝试在Web浏览器中查看它(当前它不显示任何内容)。 我的托管公司告诉我,应该使用数据库连接 我以为我需要包括IP地址(使用PhPMyAdmin登录时看到的地址),因此我也添加了该地址。但是,

  • 我试图连接到我的mongo数据库在我的远程服务器: 但我有一个错误: MongoDB外壳版本:2.6.10连接到:xxx。xxx。xxx。xx:27017/测试2016-11-07T05:18:39.140 0000警告:无法连接到xxx。xxx。xxx。xx:27017,原因:错误号:111连接被拒绝2016-11-07T05:18:39.142 0000错误:无法连接到服务器xxx。xxx。x

  • 我在MySQL上有2个数据库。ge和GE_SC001。 我可以通过我的ASP.NET mvc应用程序在本地访问这两个。 Web.config null 稍后,当我在web服务器上部署应用程序,并尝试从本地机器访问它们时。我将server=localhost更改为机器的面向外部的IP地址。现在我只能访问一个GE。当我尝试访问第二个时,它会给我错误。 拒绝用户“root”@“对数据库”GE_SC001

  • 当我使用此配置(连接到本地DB)时-一切正常: 我唯一更改的是另一台机器的IP,而我总是得到相同的错误: 这是我得到的错误: 最后一个成功发送到服务器的数据包是在0毫秒前。驱动程序没有从服务器接收到任何数据包。在Sun.Reflect.NativeConstructorAccessorImpl.NewInstance0(原生方法)在Sun.Reflect.NativeConstructorAcce

  • 我正在用Spring Boot开发一个应用程序。我正在使用phpMyAdmin(在我的大学是免费的)数据库进行持久化。我的数据库在远程服务器上。如何为远程数据库连接配置数据源? 请帮助我在属性文件和数据源bean配置中使用我的配置类中的注释来配置它。 例如:登录用户名:,密码: