问题产生背景:html
安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据本身的问题总结以下:mysql
第一步:修改配置文件免密码登陆mysqlsql
vim /etc/my.cnf 数据库
1.2 在 [mysqld]最后加上以下语句 并保持退出文件;vim
skip-grant-tables 函数
1.3 重启mysql服务:加密
service mysqld restart .net
第二步免密码登陆到mysql上;直接在命令行上输入:命令行
第三步: 给root用户重置密码;rest
3.1 首先查看当前root用户相关信息,在mysql数据库的user表中;
select host, user, authentication_string, plugin from user;
host: 容许用户登陆的ip‘位置’%表示能够远程;
user:当前数据库的用户名;
authentication_string: 用户密码;在mysql 5.7.9之后废弃了password字段和password()函数;
plugin: 密码加密方式;
3.2 若是当前root用户authentication_string字段下有内容,先将其设置为空;
3.3 退出mysql, 删除/etc/my.cnf文件最后的 skip-grant-tables 重庆mysql服务;
3.4 使用root用户进行登陆,由于上面设置了authentication_string为空,因此能够免密码登陆;
3.5使用ALTER修改root用户密码;
至此修改为功; 重新使用用户名密码登陆便可;
修改中遇到的问题:
1. 根据网上的这篇文章进行修改,报错;
网友文章:Linux-CentOS7下修改root密码和密码过时问题:
在使用这句话修改密码时报错:
报错缘由:mysql5.7.6之后废弃了user表中的password字段和 password() 方法;
因此上面的方法对 mysql8.0.1是行不通的;
2. 根据网友的这篇文章进行修改,报错;
网友文章: 修改MySQL 5.7.9版本的root密码方法以及一些新变化整理
3. 参考MYSQL8的官网文档, 感受写的也很水;
MySQL8官网文档: mysql8.0 reference for manual
4. 必定不要采起以下形式该密码:
这样会给user表中root用户的authentication_string字段下设置了newpassword值;
当再使用ALTER USER 'root'@'localhost' IDENTIFITED BY 'newpassword'时会报错的;
由于authentication_string字段下只能是mysql加密后的41位字符串密码;其余的会报格式错误;
*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE
转载:https://www.cnblogs.com/jjg0519/p/9034713.html