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

当你使用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就是不行,现在应该可以连接成功了,祝你好运。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值