重置密码解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)或者NO
一般是因为密码错误引起,YES代表输入密码,密码错误,NO代表未输入密码,密码错误,
都是因为密码错误引起
**
解决方案
1 通过跳过MySQL的密码认证过程,修改密码
第一步:输入命令
vim /etc/my.cnf
进入my.cnf在后面加入“skip-grant-tables”用来跳过密码验证的过程
点击 i 进入编辑
esc退出编辑输入 :wq! 保存并退出
2
接下来重启Mysql
重启Mysql命令 service mysql restart
重启出错可以直接重启liunx系统,打开之后启动mysql
启动mysql 命令 service mysql start
3
重启之后我们直接输入mysql可以直接进入
当出现 **mysql>**就代表跳过密码成功接下来就是重要的了
4
使用sql来修改root的密码
mysql> use mysql;
mysql> update user set password=password(“你的新密码”) where user=“root”;
mysql> flush privileges;
mysql> quit
一条一条的运行
如果运行mysql> update user set password=password(“你的新密码”) where user=“root”;出现下面这种情况不要着急
我们换一种方式
更换语句
*update user set authentication_string="6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9" where user=“root”;
注意*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9不要去更改里面的内容
因为mysql的密码保护机制我们提取到的这段文字是123456
也就是说我们吧Mysql的密码更换为123456
这样就成功了
接下来还是上面的操作
保存操作并退出
5
退出之后不要急着重启mysql先把我们之前改改动的文件给改回来
执行 : vim /etc/my.cnf
编辑删除并保存
6
现在我们来重启mysql
mysql重启失败的还可以跟之前一样从其liunx
重启之后们开始启动mysql
service mysql start
开始尝试登录
mysql -uroot -p设置的密码(跟着第二部走的密码为123456)
这时候我们会发现可以进来了
这时候不要急 想要修改密码或者外部访问的我们还要有操作
7 修改2个全局参数-降低密码验证策略,否则无法修改成简单密码(密码必须为字母+数字+特殊符号长度大于8位)
(命令在msql>中没有退出)
输入命令:
set global validate_password_policy=0;
set global validate_password_length=1;
之后设置你想要更改的密码
命令:SET PASSWORD = PASSWORD(‘你想要更改的密码’);
如果该操作不能执行或者出现错误,从新启动mysql或者重启liunx
设置成功之后退出mysql
命令 :exit;
8.
使用新密码登录
登录之后就可以设置mysql远程访问(该命令需在登陆mysql后执行)
想要远程访问第七步不能少!!!特别注意!!!
使用命令
命令: grant all privileges on . to ‘root’ @’%’ identified by ‘123456’;(123456是你远程访问的密码你可已更改为你现在的密码)
命令: flush privileges;
保存并退出
这样就可以了
9
我们还可以设置为开机自启动(该命令需在退出mysql后执行)
启动MySQL
命令: systemctl start mysqld
设置自启动
命令:systemctl enable mysqld
10
我们可以测试下
在window 打开Navicat ,远程连接mysql
发现我们可以链接成功了
小结
这个错误真的会让人很头疼,我也是查阅很多资料加上自己的摸索把他搞好,希望对你们有帮助