mysql 8.x.x 忘记了密码怎么办
- 停掉 mysql 服务
- 找到 usr/local/etc/my.cnf 文件 添加下面的内容来跳过登录mysql的权限验证, 保存
skip-grant-tables
- 重启 mysql 服务
- 直接登录 mysql
mysql -uroot
- 修改密码
update mysql.user set authentication_string='your new password' where user="root";
- 使用新密码登录
mysql -uroot -p "your new password"
原理分析
其实在mysql8 中,用户名和密码是存放在 mysql 这个数据库中的,默认mysql安装后有4个数据库
在mysql 数据库中有 user 表,里面存放登录用户信息,有一个用户名为 root 的用户 密码默认为空
密码不是password 而是 authentication_string 这里的密码当然是经过加密的,不同的版本有不同的加密方式
最常见的是MD5加密
密码不是password 而是 authentication_string 这里的密码当然是经过加密的,不同的版本有不同的加密方式
最常见的是MD5加密,不过不能直接在可视化界面里修改这个字段,因为你不能直接把你的未经过加密的密码填进去,而且你也不知道你的版本的数据库是采用哪种方式加密,下面有两种修改密码的方式
- 知道旧密码
mysqladmin -uroot -p 旧密码 password 新密码
- 忘记了旧密码
本文就是解决这个问题的,所以不再赘述