报错代码:
Access denied for user 'root'@'localhost' (using password: YES)
出现这个错误是由于密码错误导致。用网上的教程设置跳过密码验证的方式然后重设密码来实现,但是会有问题: 1、首先设置跳过MySQL密码验证:
vim /etc/my.cnf
在[mysqld]下面加入:skip-grant-tables,保存退出。 注意:在更改后需要重启mysql服务:
systemctl restart mysqld
2、登录mysql:直接输入mysql -uroot -p 登录。 3、最重要的是第三步,网上的教程要么是:
update user set authentication_string='' where user='root';
或者
update user set password='' where user='root';
这种方式是直接赋值设置密码字段来更改密码的,但是这是不正确的,因为这个字段的值实际是通过加密算法设置的,你自己设置了password=root,登录的时候你输入-p=root,这个时候mysql又会对密码root加密一次然后对比数据库中的password字段,这个时候肯定是不匹配的,从而还是报错。
所以正确的设置密码的方式应该是:
update user set authentication_string=password('root') where user='root';
即使用password函数进行设置,或者: 先将authentication_string字段设置为空,即:
update user set authentication_string='' where user='root';
重新登录后,会提示你需要首先设置密码,此时再使用:
set password=password('root')
4、修改完后记得:flush privileges; 5、停止mysqld服务,去掉跳过密码验证:
systemctl stop mysqld;
6、成功!
|