本地Mysql忘记密码操作

本文详细介绍在Windows环境下,当忘记MySQL密码时,如何通过一系列步骤安全地重置密码。包括关闭MySQL服务,使用DOS窗口跳过权限表启动,再通过另一DOS窗口连接MySQL并更新root用户密码。

Windows下的实际操作如下
1.关闭正在运行的MySQL。
2.打开DOS窗口,转到mysql\bin目录。
3.输入mysqld --skip-grant-tables回车。如果没有出现提示信息,那就对了。
4.再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。
5.输入mysql回车,如果成功,将出现MySQL提示符 >
6. 连接权限数据库>use mysql; (>是本来就有的提示符,别忘了最后的分号)
6.改密码:> update user set password=password("root") where user="root"; (别忘了最后的分号)
7.刷新权限(必须的步骤)>flush privileges;
8.退出 > \q
9.注销系统,再进入,开MySQL,使用用户名root和刚才设置的新密码root登陆。

### 如何重置本地 MySQL root 用户密码 如果忘记本地 MySQL 数据库的 `root` 密码,可以通过以下方法重新设置密码: #### 方法一:通过跳过权限表的方式重置密码 1. 停止当前正在运行的 MySQL 服务。可以在 Windows 的服务管理器中停止该服务或者使用命令行执行: ```bash net stop mysql ``` 2. 使用管理员权限打开命令提示符窗口,并启动 MySQL 服务时加上参数 `--skip-grant-tables` 来临时禁用授权表验证。例如,在 Windows 上可以这样操作[^3]: ```bash mysqld.exe --defaults-file="路径到配置文件/my.ini" --console --skip-grant-tables --shared-memory ``` 这里的 `"路径到配置文件/my.ini"` 需要替换为你实际安装目录下的 my.ini 文件位置。 3. 打开另一个命令行界面并登录到 MySQL 中无需提供任何密码: ```bash mysql -u root ``` 4. 切换至 `mysql` 数据库并更新用户的认证字符串为空或其他新密码[^2]: ```sql USE mysql; UPDATE user SET authentication_string=PASSWORD('新密码') WHERE User='root'; FLUSH PRIVILEGES; EXIT; ``` 如果使用的版本较新(如 MySQL 8.x),可能需要改为如下语句: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; FLUSH PRIVILEGES; EXIT; ``` 5. 关闭刚才手动开启的服务实例,重启正常的 MySQL 服务即可完成更改。 #### 方法二:利用安全模式修改密码 另一种方式是在服务器启动过程中加入特殊选项让其忽略访问控制列表 (ACL),从而允许无密连接进入系统进行调整。具体步骤类似于上述提到的内容,只是省去了编辑初始化脚本的过程直接指定参数给 mysqld 启动程序。 以上两种方案均能有效解决遗忘 Root 账号密码的情况,请根据实际情况选用适合自己的办法处理问题。 ```python # 示例 Python 脚本用于演示如何调用子进程执行 shell 命令 import subprocess def reset_mysql_password(): try: result = subprocess.run(['net', 'stop', 'mysql'], check=True, text=True) print(result.stdout) start_command = ['mysqld.exe', '--defaults-file="E:\\DevApp\\MySQL\\MySQL Data\\MySQL Server 8.0\\my.ini"', '--console', '--skip-grant-tables', '--shared-memory'] process = subprocess.Popen(start_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) second_terminal_commands = [ "mysql -u root", "USE mysql;", f"UPDATE user SET authentication_string=PASSWORD('{new_password}') WHERE User='root';", # 替换 new_password 变量值为所需的新密码 "FLUSH PRIVILEGES;", "EXIT;" ] with open("temp_script.sql","w") as file: for cmd in second_terminal_commands: file.write(cmd+"\n") execute_sql_file = ["mysql", "-uroot", "< temp_script.sql"] sql_result = subprocess.run(execute_sql_file, input=None, capture_output=True, text=True) print(sql_result.stdout) process.terminate() except Exception as e: print(f"Error occurred: {e}") reset_mysql_password() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值