问题描述:
此篇文章针对的是Linux服务器上mysql8.0版本的修改密码方式
因为长时间没动到linux服务器的mysql,导致自己当初里面设置的密码是啥。
上网找了很多资料去修改重置了一下mysql的密码,记录一下顺便让遇到相同问题情况的朋友们少走一些坑。
解决步骤:
一、修改登录设置(编辑my.cnf文件跳过登录)
进入文件编辑
vim /etc/my.cnf
2、在文件中[mysqld]下添加上这一段代码
skip-grant-tables
3、保存退出,重启mysql服务器(记得重启,不然文件编辑后不生效)
service mysqld restart
重启完毕后 登录mysql,此时是不需要密码的,提示需要输入密码直接回车就能进入
mysql -u root -p
二、修改密码
(1)执行以下语句:1、use mysql; 2、select user,host from user where user='root';
(这里主要查看允许访问root的host有哪些,%表示所有)
mysql> use mysqlReading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql>mysql> select user,host from user where user='root';+------+------+| user | host |+------+------+| root | % |+------+------+1 row in set (0.00 sec)
(2)更改密码:
执行以下代码:'xxxxxx'是你要输入的密码。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxxx';flush privileges;
这里要注意,如果你上面(1)中查询出来的root账户host是localhost,则需将'root'@'%'改为 'root'@'localhost'。否则会报错 ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'
(3)依旧报错:ERROR 1396 (HY000)
如果确认无误上面的(1)中查出的user和host和(2)中的脚本是对应的,但是执行后依旧报
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'
或ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'
解决方法:先将密码置空,再修改密码
直接按下面的顺序执行脚本,就可解决
mysql> update user set authentication_string='' where user='root';mysql> flush privileges;mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxxx';
这一块很离谱,不知道为什么需要先将密码置空,在网上找了很多资料后发现有网友是同样情况解决的,希望碰到相同情况的朋友们这篇文章能帮到你们。
来源地址:https://blog.csdn.net/weixin_54689482/article/details/127974731