首页 > 技术文章 > mysql访问被拒问题

cky-2907183182 2020-01-18 22:30 原文

写之前,先心平气和地说一句:Mysql,NMSL

以下正文

有时,在用jdbc连接mysql的时候,会无缘无故出现下面的异常:
java.sql.SQLException: Access denied for user 'root'@'localhost' (using pass:YES)

首先,修改mysql密码

嗯,就是修改密码,也不到为啥,虽然咱密码也没填错

进入数据库,使用mysql这个数据库(use mysql),输入命令

update user set password=PASSWORD("新密码") where user='root';

如果是mysql5.7,此时会报错:
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
因为mysql5.7已经没有password这个字段了,password字段改成了:authentication_string
所以mysql5.7修改密码的命令为:

update user set authentication_string=password('新密码') where user='root';

修改密码之后,要重启一下Mysql服务(services.msc)或者刷新一下,新密码才会生效

注:以上是Mysql5.7修改密码的方式,其他版本自行BD

增加jdbc配置

这个时候还没完,重启后会发生第二个错误:
:java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized...

此时,要修改jdbc的yml或properties配置文件:

spring:
  datasource:
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/myblog?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

就是在'url: jdbc:mysql://127.0.0.1:3306/myblog'的后面加上'?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC'

这个时候应该就mou问题了

推荐阅读