【数据库】忘记mysql本地密码

说明

太久没使用本地mysql数据库,忘记了密码。

操作步骤

1.进入安装MySQL的bin目录下,按下shift + 鼠标右键,会出现“在此处打开 PowerShell 窗口”的字样,然后点击,打开PowerShell
在这里插入图片描述

2.输入net stop mysql(或net stop mysql80),停止MySQL服务(或者到服务中手动停止。位置:控制面板\所有控制面板项\Windows 工具\服务)

在这里插入图片描述
在这里插入图片描述

3.输入mysqld --skip-grant-tables 回车
4.重新打开一个窗口,进入bin目录,输入mysql,然后再输入use mysql
5.修改数据库连接密码,命令如下任选,密码按照自己想法设置
update user set password=password("123456") where user="root";
ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
6.重新加载一下权限,将设置了密码的用户root的权限信息从内存中写入数据库。输入命令flush privileges;,英文分号“;”不可省略。如果不写“;”,回车之后输入“\g”,效果一样。
7.退出 mysql ,输入quit
8.另开一个cmd窗口,执行mysqladmin -u root -p shutdown,然后提示输入密码:输入自己设置的密码。
9.开启数据库服务,输入net start mysql
10.验证是否设置成功。另开cmd,进入到mysql的bin目录下,输入mysql –u root –p,回车之后提示输入密码,然后显示如下。连接成功。
在这里插入图片描述

操作失败解决

1.在以上操作步骤的第四步,输入mysql,报错

第一种报错

ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)

当你不指定登录用户时,Windows 在连接 MySQL 数据库的时候,就会使用这个 ODBC 用户去连接 MySQL 数据库,不管你的 MySQL 数据库中是否存在这个 ODBC 用户,Windows系统,都会使用这个 ODBC 用户去 尝试连 MySQL 数据库
所以,如果你不想使用 mysql -uroot -proot 这种加了两个参数(-u、 -p)方式登录 MySQL 数据库,就是想,直接 敲命令 mysql 就能进入 MySQL 控制台的话,你就需要告诉,MySQL,你不想使用 Windows 系统为你选的 ODBC 用户去连 MySQL,你想使用一个你熟悉的用户登录 MySQL,并且,在登录的时候,不想输入过多的 参数,只用一个 mysql 命令 ,就可以登录到 MySQL 控制台中。
简单一句话,你要解决,就是等于可以不输入密码就进入mysql。
你可以忽略这个问题,因为我没有管。

解决办法如下

  • 1.打开my.ini,可以全局搜索,默认位置:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini(安装路径下)
  • 2.如果没有权限修改,将其复制到桌面,或其内容复制到新的文本中进行修改。
  • 3.将user=root``password=root加入到my.ini中,保存后放回初始位置。
    在这里插入图片描述
  • 4.进入服务,找到mysql服务,点击选择属性(如果你是mysql80,就找mysql80)
    在这里插入图片描述
  • 5.在属性中看到mysql的可执行文件的路径,将my.ini放在这个bin之前的目录下(mysqld.exe 应用程序的父级目录 bin 的上一级目录中)
    在这里插入图片描述
  • 6.此时再输入mysql,进入mysql,再查询一下,select user();。当前用户是否正确

在这里插入图片描述

第二种报错

MySQL: 无法将“mysql”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写...
这个需要你重新配置mysql的全局变量

解决办法如下

  • 1.到控制面板\所有控制面板项\系统,打开高级系统设置
    在这里插入图片描述
  • 2.选择高级-环境变量
    在这里插入图片描述
  • 3.找到path,选中并点击编辑
    在这里插入图片描述
  • 4.输入mysql的安装目录带bin的地址,点击确定,依次关闭即可。
    在这里插入图片描述

2.从上面操作第二步后重新操作

步骤如下

1.跳过MySQL验证(无密码登录),其中my.ini文件地址根据自己情况修改
mysqld --defaults-file="C:ProgramData\MySQL\MySQL Server 8.0\my.ini" --console --skip-grant-tables --shared-memory

报错

2023-07-07T06:38:28.000247Z 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2023-07-07T06:38:28.000544Z 0 [System] [MY-013169] [Server] mysql安装目录\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.28) initializing of server in progress as process 20396
2023-07-07T06:38:28.003075Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2023-07-07T06:38:28.003087Z 0 [ERROR] [MY-013236] [Server] The designated data directory mysql安装目录\MySQL Server 8.0\Data\ is unusable. You can remove all files that the server added to it.
2023-07-07T06:38:28.016844Z 0 [ERROR] [MY-010119] [Server] Aborting
2023-07-07T06:38:28.018009Z 0 [System] [MY-010910] [Server] mysql安装目录\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld 8.0.28)  MySQL Community Server - GPL.

解决办法如下

  • 1.将my.ini中datadir的目录下的文件全部清空,删除(暴力方式)
  • 2.在bin目录下,打开cmd,输入mysqld --initialize --console
  • 3.将‘root@localhost:’后的保存下来,这就是你的新密码。你可以修改密码了

2.继续操作中的第四步往后的操作。修改密码即可。

参考链接

1.MySQL忘记密码,重置root密码(纯步骤):https://blog.csdn.net/qq_42307920/article/details/127049565
2.终极解决 mysql8.0 ERROR 1045 (28000): Access denied for user ‘ODBC‘@‘localhost‘ (using password: NO):https://blog.csdn.net/m0_47505062/article/details/122342121
3.initializing of server in progress as process 4656:https://blog.csdn.net/Rbaggio92/article/details/106013390
4.忘记本地MySQL数据库密码的解决方案https://www.cnblogs.com/liusx0303/p/10093050.html
5.解决:ERROR 1045 (28000): Access denied for user ‘ODBC‘@‘localhost‘ (using password: NO):https://blog.csdn.net/qq_41550190/article/details/117961327

猜你喜欢

转载自blog.csdn.net/Daisy74RJ/article/details/131597532