我在论坛上看过很多这个问题,但所有的问题都略有不同,所以不适用,所以我要再问一遍。我已经创建了一个使用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如果任何人能提供帮助,我将不胜感激。
发布于 2014-05-07 12:34:08
从异常可以看出代码的行为是正确的。尝试授予用户对数据库的访问权限:
GRANT ALL ON somedatabase.* TO 'username'@'127.101.5.73';https://stackoverflow.com/questions/23508719
复制相似问题