前序
Navicat连接MySQL时弹出:1045:Access denied for user ‘root’@’localhost’出现 Error 1045 。表明输入的用户名或密码错误被拒绝访问了,也可能是的账号不允许从远程登录,只能在localhost本地登录数据库。
尝试本地登录数据库时还发现把mysql密码给忘了 栓Q
解决方法
重置密码,刷新权限
步骤
1.首先将MySQL的服务关闭
打开命令行cmd输入
net stop mysql57
即可关闭MySQL服务。
或者,找到服务,找到MYSQL57(我电脑装的是mysql5.7,所以这里是MYSQL56)然后关闭
2.跳过密码授权登录
mysqld --console --skip-grant-tables --shared-memory
第一次跳过授权时报错,定位不到安装目录下的data文件夹。注意,这时候不要自己手贱新建一个空的data文件夹(这样后续的步骤就会出现找不到mysql.user表),或者拷贝别人的data文件夹,后续 操作会出现很多潜在问题:比如遇到的执行show variables like %charact%; 语句时,报错表不存在!
安装mysql5.7+版本时,若发现因根目录下,缺少data文件夹的情况,打开cmd命令窗口,并且进入到MySQL安装目录中的bin目录,输入以下命令
mysqld --initialize-insecure --user=mysql
执行完上面命令后,MySQL会自建一个data文件夹,并且建好默认数据库,登录的用户名为root,密码为空
初始化后就可以再跳过授权了
3.再继续以管理员身份打开一个cmd窗口,进行重置密码
依次执行以下命令:
- mysql
- use mysql
- update user set password=password('新密码') where user='root' and host='localhost';
- flush privileges
- quit
- mysql -u root -p
- 输入新密码
注意: Mysql版本如果在5.7及以下时,上面第三步语句应为:
update user set authentication_string=password('新密码') where user='root' and host='localhost';
原因:Mysql版本在5.7及以下时,mysql数据库下面已经没有password这个字段了,password字段改成了authentication_string ,但思路是不变的,即通过语句直接在mysql数据库里修改密码字段
4.使用新密码重新登录mysql验证
- mysql -u root -p
- 输入新密码
5. 使用Navicat可视化工具连接Mysql
参考文章:
Navicat连接MySQL时弹出:1045:Access denied for user ‘root’@’localhost’