Mac下mysql 8.0.22 找回密码的方法
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
第二步: 用系统管理员权限跳过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
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';
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
mysql启动时出现ERROR 2003 (HY000)问题的解决方法
这篇文章主要为大家详细介绍了mysql启动时出现ERROR 2003 (HY000问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2018-03-03mysql 8.0 找不到my.ini配置文件以及报sql_mode=only_full_group
MySQL5.7.5及以上版本启用ONLY_FULL_GROUP_BYSQL模式可能导致的问题,本文就来介绍一下找不到my.ini配置文件的解决方法,感兴趣的可以了解一下2024-08-08解决MySql版本问题sql_mode=only_full_group_by
这篇文章主要介绍了解决MySql版本问题sql_mode=only_full_group_by,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-11-11Mysql数据库中把varchar类型转化为int类型的方法
这篇文章主要介绍了Mysql数据库中把varchar类型转化为int类型的方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下2016-07-07
最新评论