今天使用MySQL的时候,sqlyog突然链接不上了,提示连接错误:
MySQL连接失败报错:ERROR 1045 (28000): Access denied for user ‘ODBC’@‘localhost’ (using password:YES)
然后又去命令行用 mysql -u root -p 输入密码连接还是不行,但是我又没有改过密码以前的密码就是登不上去,只好考虑重置一下密码。重置方法如下:
- 如果是8.0以后的版本,用管理员身份打开一个cmd窗口,输入下面的代码:
> net stop mysql # 关闭mysql服务
> mysqld --console --skip-grant-tables --shared-memory # 开启--skip-grant-tables模式
停止本地的mysql服务,然后进入 –skip-grant-tables 模式,在这个模式下我们可以不进行登录直接进行管理员操作。
输入代码后,保持当前cmd窗口开启,再去开另一个cmd窗口进行操作。
- 在新的cmd窗口中执行:
> use mysql #选择数据库
> select User from user # 查看下当前用户是否存在
> select user,authentication_string,host from user where user="root"; # 查看用户的密码
这里的第三个语句,不同版本的mysql存放密码的字段不同,如果authentication_string
提示报错,可以换成password
试一下。
查到密码后,看到的应该是一串加密的结果,也没法看出我的密码是多少,所以直接更改root的密码吧。
- **关闭刚才打开的第一个cmd窗口,**然后在第二个cmd窗口中执行命令:
> update user set authentication_string='' where user='root'; #将原来的root密码置空,cmd的sql语句记得加分号
> quit # 退出当前连接
> net start mysql # 在第一步关闭了mysql服务,这里需要开启。
> mysql -u root -p #使用空密码登录root账号
> PASSWORD: #这里如果提示输入密码,直接回车
> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; # 修改root的密码
- 经过前面的步骤密码就更改完了,可以quit退出,然后用密码再登陆一次,没问题就可以了。