如何使用 jdbc 代码手动连接到 mysql?

Posted

技术标签:

【中文标题】如何使用 jdbc 代码手动连接到 mysql?【英文标题】:How to get a manual connection to mysql using jdbc code? 【发布时间】:2014-05-07 04:24:56 【问题描述】:

我在论坛上看到了很多这个问题,但所有问题都略有不同,因此不适用,所以我要再问一次。我创建了一个使用 mysql 作为后端的 java web 应用程序。 mysql 数据库安装在与 Web 服务器不同的服务器上。在 mysql 中,我为我的 Web 应用程序创建了一个用户,定义了用户的密码,授予用户权限,还定义了用户可以从哪个 IP 地址连接。我已将数据库用户信息放入 Web 应用程序的 jdbc.properties 文件中。 Web 应用程序利用 Spring 框架,当在 Web 服务器上运行时,它能够在 Spring 管理连接时很好地连接到数据库。但是,我有一段代码需要我使用 jdbc 代码手动连接到数据库,当这段代码运行时,使用与 spring 管理的连接完全相同的数据库连接信息,我收到错误:

<b>java.sql.SQLException: Access denied for user 'someuser'@'127.101.5.73' (

使用密码:是)

我很确定一切都是正确的,因为它在我的开发设置中就像一个魅力,但它在测试环境中不起作用,所以一定有问题。下面的代码是我用来尝试连接到数据库的代码。 propertiesMap 变量保存从 jdbc.properties 文件中读取的数据库信息:

private static void getResultSet(Map<String, String> propertiesMap, String sql) throws Exception 
try 
  // load the MySQL driver
  Class.forName("com.mysql.jdbc.Driver");

  // get the connection
  connect = DriverManager.getConnection(propertiesMap.get("jdbc.prod.url") + "?user=" 
          + propertiesMap.get("jdbc.prod.username") + "&password=" + propertiesMap.get("jdbc.prod.password"));

  // create the statement
  statement = connect.createStatement();

  // execute sql statement
  resultSet = statement.executeQuery(sql);

 catch (Exception e) 
  throw e;

以上代码中的连接url解析为:

jdbc:mysql://192.168.1.55:3306/somedatabase?user=someuser&password=somepassword

如果有人能提供任何帮助,我将不胜感激。

【问题讨论】:

很多事情都可能出错。检查用户“someuser”是否可以通过此连接访问。尝试使用 mysql 连接器并使用提供的凭据连接到远程服务器。 某个用户有访问权限。该应用程序将来自 jdbc.properties 文件的完全相同的用户和密码注入到 spring 应用程序上下文中的驱动程序管理器 bean 设置中......所有 DAO 都可以很好地连接到数据库并提取信息。只是这个手动的部件不起作用 【参考方案1】:

从异常中您可以看出代码的行为正确。尝试授予用户访问数据库的权限:

GRANT ALL ON somedatabase.* TO 'username'@'127.101.5.73';

【讨论】:

它没有用。我已阅读 mysql 文档,它指出该特定错误消息表示密码不正确但凭据正确。嗯... 尝试使用相同的凭据从终端手动连接。 我无法以那种方式登录到 mysql 服务器……很有趣。我一直在通过 webmin 管理数据库服务器,所以我从不知道登录可以在应用程序中成功但在命令行失败。它似乎失败了,因为密码中有一个符号 (&)。谢谢你的帮助!!!希望从密码中删除这个特殊字符可以解决问题:D 希望我能给你一个赞成票,但我没有足够的分数: 别担心 :) 重要的是我们都分享知识和利益

以上是关于如何使用 jdbc 代码手动连接到 mysql?的主要内容,如果未能解决你的问题,请参考以下文章

如何用 MySQL 打包 Java 程序?

使用 JDBC 连接到 MySQL 数据库

无法使用 JDBC 连接到 docker 中的本地 MySQL

如何使用SSL JDBC连接到MySQL服务器

如何使用JDBC将Cordova应用程序连接到MySQL数据库?

使用 JDBC 从 Android 连接到 MySQL