赞
踩
新安装的mysql,在输入默认密码时,会报1045错误:ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO)封
为了解决这个问题,我查阅了很多资料,但是都没能解决问题,后面偿尝试很多次后,终于找到了解决办法。这个倒不是说其他的帖子不对,是因为每个人安装的环境不一样,就导致解决办法不一样,好了废话不多说,直接进入正题
一、我的安装环境
操作系统: CentOS Linux release 7.6.1810
mysql版本:mysql-8.0.20-el7-x86_64.tar.gz
二、安装过程就不多做表述,直接从安装完成后开始。
1、修改mysql配置文件:my.cnf,如果是Windows系统,请自行百度。
vi/etc/my.cnf
在[mysqld]下面加上一行 skip-grant-tables 。这个语句的作用就是跳过root密码登录,虽然跳过,但权限是收到限制的,这不展开讲。只是强调下,如果有这个语句在,Mysql是不能外网访问的,3306端口也是关闭的,这个要注意。
保存退出
2、重启mysql
我的版本重启命令是: systemctl restart mysql,用适合自己linux版本的重启命令进行重启。鈴
3、登录mysql
mysql -uroot -p
这个时候不用输入密码 ,直接回车,就可以登录mysql
4、选择数据库
use mysql
5、执行查询语句,看下数据库的用户
select user,host, plugin from user;
一定要注意符号要英语输入法下进行输入,语句结束都是分号
查询出来的结果,在host处,可能出现两种情况,一种是‘%’,还有一种是‘localhost’。这个要注意区分,简单理解就是:允许用户登录的 ip 位置,’%’表示可以远程;如果是‘localhost’,表示本地登录。user:登录数据库用户名,这个地方我是root,当然也可以是其他用户名,不要刻舟求剑,以自己的用户名为准。
6、重置密码为空
这步是关键,因为没有这步,很可能无法重置密码
update user set host=’%’,plugin=‘mysql_native_password’,authentication_string="" where user=“root”;
注意:host处,根据上面查出来的实际情况而定,如果是‘%’,则是host=’%’;如果是‘localhost’,则是host=‘localhost’;另外,密码是和用户那个地方是“”双引号,不是单引号****
如果执行报错,ERROR 1064 ,检查下符号,如果都无误,先执行下 flush privileges;再执行这个重置密码语句。
7、退出登录
quit;
8、重新进入my.cnf文件,将skip-grant-tables注释掉或是删除。
9、重启mysql,并登录
这时候,直接回车,因为密码已经被重置为空了。
10、执行重置密码语句
alter user’root’@’%’ IDENTIFIED BY ‘MyNewPa@123’;
注意这个语句和低版本的mysql的区别,不要套用。另外,8.0版本以上,密码策略有要求,必须是大写、小写、特殊字符以及数字混合。如果达不到要求,执行语句时,会报错
ERROR 1819 (HY000): Your password does notsatisfy the current policy requirements。
11、执行成功后,退出。
12、再次进入时,就需要输入重置后的密码了。
以上就是小编解决问题的过程,分享出来,希望帮助更多的人解决问题。能解决这个问题还要感谢一个人,在无意的聊天中解决的,欢迎大家留言交流,不对的地方请指正,如果要转载,请注明原地址,谢谢!笙
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。