欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Mac下mysql 8.0.22 找回密码的方法

程序员文章站 2022-07-02 18:26:29
mac 最新版 mysql 8.0.22 找回密码大全问题描述:昨天心血来潮, 想在mac上体验一下最新版的mysql的更改密码的流程, 一下子手贱用mysql_native_password替代ca...

mac 最新版 mysql 8.0.22 找回密码大全

问题描述:

昨天心血来潮, 想在mac上体验一下最新版的mysql的更改密码的流程, 一下子手贱用mysql_native_password替代caching_sha2_password改了plugin之后, 再用update set來修改authentication_string, 还不记得加password(‘new password')函数, 从而导致了

error 1045 (28000): access denied for user 'root'@'localhost' (using password: yes)

原因分析:

整件事下来专坑的地方有几点:

1、password()函数在mysql 8.0中已被弃用
2、authentication_string字段下只能是mysql加密后的41位字符串密码, 其他的会报格式错误. 这也就意味着md5(‘new password')不能起到原来password(‘new password')的功能
3、mysql 8.0 数据库默认的认证插件是caching_sha2_password, 包括你使用mysqladmin去初始化数据库也是使用这个的,所以如果想让我们平常的mysql连接客户端也可以连接上mysql8.0的数据库那就要修改default_authentication_plugin, 也就是mysql.user里面的plugin这column

解决方案:

第一步: 关闭mysql服务器

左上角苹果icon - system preferences - mysql - stop mysql server

Mac下mysql 8.0.22 找回密码的方法

第二步: 用系统管理员权限跳过mysql安全认证强行登陆

1.command + space
2.terminal
3.sudo -i
4.cd /usr/local/mysql/bin/
5../mysqld_safe --skip-grant-tables &
6.return (就是键盘上的return点一下)
7.这时候mysql server再次变成running, 可以用ps -ef | grep -v ‘grep' | grep 'mysql'去查看它的pid以及启动它的mysqld_safe的pid
8../mysql

截至目前为止, 已经顺利用安全模式登陆mysql

Mac下mysql 8.0.22 找回密码的方法

9. flush privileges; (这条语句在这里是把当前user表的用户信息和privilege表的权限提取到内存里, 保证可以顺利得到权限更改user表)
10. 先把user表里的root的authentication_string设为空字符串, 再用alter user去重新设置密码
11. 退出mysql, 并用kill -9杀死mysqld_safe, 杀死mysql, 重新启动
12. 用新设置的密码正常登陆

use mysql;
update user set authentication_string = '' where user = 'root';
alter user 'root'@'localhost' identified by '123456';

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关标签: mysql8.0.22 密码