用户对应的密码不正确
如果是这样,验证的方式是在CMD中切换到mysql server的bin目录输入命令:
mysql -u [username] -p
回车后,输入密码,如果访问被拒,那么错误原因应该是这种。
在用户名和密码正确的情况下,其次的原因可能就是没有权限
在workbench中的左侧栏上方的user and privilege中查看自己选中的user acount的
schema privileges,如果什么都没有在query中执行命令:GRANT ALL PRIVILEGES ON [databasename].[tablename]TO ‘user’@’host’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
例如:
GRANT ALL PRIVILEGES ON ComicFM.* TO ‘root’@’localhost’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
在1,2都没问题的状况下,应该就是编码方式的原因了。
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = (Connection)DriverManager
.getConnection("jdbc:mysql://localhost:3306/?user=root&password=123456
&useUnicode=true&characterEncoding=UTF8");
Statement s = conn.createStatement();
System.out.println(conn.isClosed());
}
catch (Exception e) {
e.printStackTrace();
}
在main函数中用这段代码测试一番(记得user、password和端口不同要改),正确的运行结果是false,没报错的话,那么就是编码方式的问题.
如果是在spring中设置dataSource的方式,就只能这样注释掉user和password,否则,连接到数据库的url中user和password没被正确编码
- applicationContext.xml
<!-- config datasource -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" scope="singleton">
<property name="driverClass" value='${jdbc.driver}' />
<property name="jdbcUrl" value="${jdbc.url}" />
<!-- <property name="user" value="${jdbc.username}" />
<property name="password" value="$jdbc.password}" /> -->
<property name="maxPoolSize" value="20" />
<property name="minPoolSize" value="1" />
<property name="initialPoolSize" value="1" />
<property name="maxIdleTime" value="20" />
</bean>
- jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/database?useUnicode=true&characterEncoding=UTF8&user=root&password=123456
错误原因暂时只找到这三种,以后有的话再加。