Mysql5.7登录错误1045和1130的解决方法,亲测有用,希望能帮助到你们。
Mysql
(针对Mysql5.7版本,其他版本可能略有不同)
错误:1045
解决方法:
以管理员身份运行cmd(win8系统:win+x 键 ,再按 A键 ),进入Mysql安装目录下的bin目录下(如下图所示,根据自己的情况修改目录)
@:下面还要再打开cmd窗口,为方便区别,此窗口记为‘’ cmd-A ‘’窗口
运行net stop mysql ,停止Mysql服务
运行mysqld -nt --skip-grant-tables,使得在登录时可以跳过登录密码
以上三步正常运行后该cmd窗口应该处于静止不动,光标闪烁的状态
打开另一个管理员的cmd窗口 @:此窗口记为‘’ cmd-B‘’窗口
运行mysql -uroot -p回车,出现Enter password:直接回车,成功进入了mysql
可以运行以下命令来修改密码:
use mysql使用mysql数据库
update user set authentication_string=password('mysqladmin') where user='root'; 更新root的密码为mysqladmin ,显示Query OK则修改成功。
解释:更新 user表 使 authenticatio_string(密码)字段 = mysqladmin(password('') 是以密码保护的形式存储,在数据库看不见密码原文) 修改的是,user(字段)=root(值)的哪一行。
以上两步就可以修改密码成功。若你的mysql不是用authentication_string字段来存储密码。可以用以下方法来找到存储密码的字段。
show tables;查看当前数据库下的所有表
desc user查看user表的结构,在这一步你可以查看user表的字段,密码字段就在这里,不是mysql5.7版本的可以在“desc user”的结果下,自己判断哪个是密码字段
select host,user,authentication_string from user; 查看三列关于user表的信息,若你的密码字段不是authentication_string,可自行替换成你表中的密码字段名。
update user set authentication_string='mysqladmin' where user='root'; 不推荐,这种方式就是将密码明文不经过加密直接显示在数据库中。
经过以上6步后,已经成功的修改了数据库登录密码。接下来是再次尝试登录。
关闭‘’cmd-A‘’窗口 (输入了skip-grant-tables的cmd)
关闭任务管理器中的进程mysql.exe(任务管理器->详细信息->进程->找到mysql.exe(大约占150M内存)->关闭)
在‘’cmd-B‘’窗口中输入net start mysql
输入mysql -uroot -p,敲入新的用户名、密码 即可登录成功
若还是不能登录,或出现错误1130。则是权限问题 (或 host问题),以下为权限为题的解决方法:
错误:1130
解决方法:
按以上方法跳过验证进入数据库
在mysql>中执行flush privileges刷新权限(不执行这步.会出现在skip-grant-tables模式下不能授权的问题)
执行grant all privileges on . to root@'localhost' identified by "mysqladmin";为root用户授权
关闭cmd和mysql.exe进程,启动mysql服务net start mysql,重新登录mysql -uroot -p即可成功
若还是不能解决,或有其他问题。可以评论留言,我会尽快回复。
原文地址https://www.cnblogs.com/cgua/p/10605941.html