Mysql 80 解决忘记密码无法跳过错误 mysqld --console --skip-grant-tables --shared-memory 代码无效的问题

平台win10
Mysql版本8.0.20

2021-12-14:
距楼下好兄弟说,此方法并不会保留您本地的Mysql数据库,但是我还没有去验证,所以如果比较在意自己数据库内的数据,可以先看一下楼下好兄弟的一篇文章,据他所说是对我的方法进行了优化
置顶评论所描述的一种解决办法

——————以下为正文

网上总是说如果忘记了密码 就进入MySQL的bin目录
输入mysqld --console --skip-grant-tables --shared-memory 跳过密码验证
如果正常执行的话接下来就不能输入了,需要另开一个CMD
如果不正常执行,就会像我图上的这样,那需要检查你的mysql路径下的文件了i
就这个问题折腾了我很久,国内网上都没找到解决方式,希望能帮到大家

在这里插入图片描述
很可能你和我一样你没有data和my.ini这样的文件
在这里插入图片描述
这时候我们需要先删除自己的mysql服务
sc delete MySql80
也可能是mysql 根据自己的服务改相应的名字
删除完成之后,一定要cmd 打开services.msc 手动检查服务有没有正常删除 如果还能停止一定要先停止

接下来新建my.ini配置文件
代码如下

先用简易版

[mysql]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
basedir=C:/Program Files/MySQL/MySQL Server 8.0 
datadir=C:/Program Files/MySQL/MySQL Server 8.0/data

如果不行再用下面的复杂版本

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_bin
init_connect='SET NAMES utf8mb4'
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
basedir = C:\Program Files\MySQL\MySQL Server 8.0 
datadir =  C:\Program Files\MySQL\MySQL Server 8.0\data
port = 3306
# server_id = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 128M
sort_buffer_size = 16M
read_rnd_buffer_size = 16M 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

其中basedir和databir记得改成自己对应的mysql目录
接着回到cmd 在mysql的bin目录下执行语句 建议管理员模式cmd

mysqld --initialize-insecure --user=mysql

接着应该会自动生成data文件夹
然后再输入

mysqld --install "MySql80" --defaults-file="C:\Program Files\MySQL\MySQL Server 8.0\my.ini"

记得后面的路径改成自己的ini文件的路径,这个操作是安装MySql服务,同时设置绑定my.ini配置文件
最后再输入

net start mysql80

最后应该会这样
在这里插入图片描述
此时再重新登录mysql 会发现不需要密码就可以登录了
在这里插入图片描述
再输入更改代码命令 改成你不会忘记的密码即可

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

在这里插入图片描述
如果成功的解决了您的问题记得告诉我喔

  • 73
    点赞
  • 102
    收藏
    觉得还不错? 一键收藏
  • 73
    评论
评论 73
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值