重置MySQL root密码遇权限问题:mysqld启动失败及登录报错
解决MySQL root密码重置失败及权限报错问题
一、处理mysqld启动的权限与文件错误
- 以管理员身份运行命令提示符:Windows下直接打开CMD权限不足,右键命令提示符选择「以管理员身份运行」,否则会触发权限拒绝(errno 13),导致无法创建测试文件、访问
binlog.index失败。 - 检查MySQL数据目录权限:找到MySQL数据目录(默认路径多为
C:\ProgramData\MySQL\MySQL Server 8.0\Data),右键文件夹→「属性」→「安全」,确保当前管理员用户拥有完全控制权限,无权限则添加用户并赋予对应权限。 - 修正
--init-file路径格式:Windows路径建议用正斜杠或转义反斜杠,避免解析错误:mysqld --init-file=C:/mysql-init.txt --console # 或 mysqld --init-file=C:\\mysql-init.txt --console - 确认
mysql-init.txt内容正确:文件需包含重置密码的SQL语句,替换new_password为目标密码:
MySQL 8.0及以上版本:
MySQL 5.7及更早版本:ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
注意文件无多余空格/换行,编码为ANSI或UTF-8无BOM。UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost'; FLUSH PRIVILEGES; - 停止MySQL服务再启动:按Win+R输入
services.msc打开服务管理器,找到MySQL服务右键「停止」,再执行mysqld启动命令,避免端口或文件被占用。
二、解决mysql命令的1045访问错误
该错误是默认用ODBC用户无密码登录导致,需显式指定root用户登录:
mysql -u root -p
输入重置后的新密码即可登录。若仍报错,确认mysqld已成功执行init-file语句,重启MySQL服务后重试。
内容的提问来源于stack exchange,提问作者mgh
相关产品推荐
相关产品推荐

