public class JdbcUtils {
private static Properties config = new Properties();
static {
try {
config.load(JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"));
Class.forName(config.getProperty("jdbc.driverClass"));
} catch (Exception e) {
}
}
public static Connection getConn() throws SQLException {
return DriverManager.getConnection(config.getProperty("jdbc.url"), config.getProperty("jdbc.username"),
config.getProperty("jdbc.password"));
}
public static void main(String[] args) throws SQLException {
System.out.println(getConn());
}
}
报了下面的错误:
Exception in thread "main" java.sql.SQLException: Access denied for user 'root '@'localhost' (using password: YES)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:695)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:663)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:653)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:115)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1663)
at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:662)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:221)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at cn.njit.utils.JdbcUtils.getConn(JdbcUtils.java:20)
at cn.njit.utils.JdbcUtils.main(JdbcUtils.java:24)
但是如果在main方法里面直接打印DriverManager.getConnection("jdbc:mysql:///sx?serverTimezone=Asia/Shanghai&useSSL=false", "root", "123456");是没有问题的
在main方法里面直接打印DriverManager.getConnection("jdbc:mysql:///sx?serverTimezone=Asia/Shanghai&useSSL=false", "root", "123456");是没有问题的
这就说明你的root用户在localhost主机上访问异常,所以有可能是获取到的密码或其他字段有误!
config.getProperty("jdbc.driverClass")
确认一下此值是否为你的class所需
看下你配置文件是不是配置错了 如果没错在源代码里面获取下每个配置项的值看是不是你想要的
你的数据库开启了远程登录权限了吗?
看看你的root用的密码是否正确