现在的位置: 首页 > 综合 > 正文

解决通过JDBC连接MySQL时的错误:Access denied for user

2013年12月26日 ⁄ 综合 ⁄ 共 821字 ⁄ 字号 评论关闭
当你使用JDBC连接MySQL数据库的时候,如果遇到Access denied for user这样的错误时,java程序代码如下:
  1. Class.forName("com.mysql.jdbc.Driver");
  2. String url = "jdbc:mysql://localhost:3306/bookdb";
  3. String user = "jack";
  4. String pass = "123456";
  5. Connection con = DriverManager.getConnection(url, user, pass);

代码看起来很好,但是为什么会出现这样的错误情况呢?一般有如下几种情况:
1、你的用户名或者密码确实错误,这个情况最简单,只要把用户名和密码修改正确就可以了。
2、用户名和密码都正确,此时你可以使用如下命令通过终端进行登录测试:
mysql -u jack -p  bookdb
在提示输入密码时,输入相关的密码,看看能不能正确登录,如果不能,说明该用户不存在或者密码不对,或者该用户对bookdb没有访问权利。
使用如下命令解决赋权问题
mysql -u root -p  (这里使用root帐号登录数据库)
grant all on bookdb.*  to 'jack'@'localhost' indentified by '123456' with grant option;(给用户赋权)
flush privileges; (使用赋权生效)
如果这样赋权之后,使用JDBC还是不能连接,那么请再次使用如下命令:
grant all on bookdb.*  to 'jack'@'127.0.0.1' indentified by '123456' with grant option;(给用户赋权)
flush privileges; (使用赋权生效)
大家发现,这里只是把localhost换成了127.0.0.1,是的,在有些系统上,使用localhost就是不行,现在应该可以连接成功了,祝你好运。

抱歉!评论已关闭.