核心原理停止 MySQL → 跳过权限验证启动 → 无密码登录重置密码 → 正常重启服务一、Windows 系统管理员 CMD/PowerShell 执行步骤 1停止 MySQL 服务# 查看服务名services.msc 一般是 MySQL80 / MySQL57 net stop MySQL80步骤 2跳过权限 禁用外网安全启动 MySQL进入 MySQL 安装的bin目录示例cd C:\Program Files\MySQL\MySQL Server 8.0\bin执行命令当前窗口不要关闭mysqld --console --skip-grant-tables --skip-networking步骤 3新开管理员 CMD无密码登录 MySQLmysql -u root步骤 4重置密码版本命令不同MySQL 8.0推荐-- 先刷新权限必须执行 FLUSH PRIVILEGES; -- 设置新密码 ALTER USER rootlocalhost IDENTIFIED BY 新密码123456;MySQL 5.7use mysql; UPDATE mysql.user SET authentication_stringPASSWORD(新密码123456) WHERE Userroot AND Hostlocalhost; FLUSH PRIVILEGES;步骤 5正常重启服务关闭之前运行mysqld的窗口启动 MySQL 服务net start MySQL80使用新密码登录mysql -u root -p二、Linux 系统CentOS / Ubuntu步骤 1停止 MySQL 服务# CentOS/RHEL sudo systemctl stop mysqld # Ubuntu/Debian sudo systemctl stop mysql步骤 2安全模式跳过权限启动sudo mysqld_safe --skip-grant-tables --skip-networking 步骤 3无密码登录mysql -u root步骤 4重置密码MySQL8.0FLUSH PRIVILEGES; ALTER USER rootlocalhost IDENTIFIED BY 新密码123456;MySQL5.7use mysql; UPDATE mysql.user SET authentication_stringPASSWORD(新密码123456) WHERE userroot; FLUSH PRIVILEGES;步骤 5重启 MySQL 服务sudo pkill mysqld sudo systemctl start mysqld三、常见报错 避坑要点8.0 直接执行ALTER USER报错原因跳过权限模式下不能直接改用户必须先执行FLUSH PRIVILEGES;只能本地登录不能远程连接需要同时授权root%ALTER USER root% IDENTIFIED BY 新密码;安装 MySQL8.0 首次安装的临时初始密码# Linux查看临时密码 grep temporary password /var/log/mysqld.log # Windows在安装日志中查找密码复杂度报错 设置包含大小写 数字 特殊符号例如Root123456四、备用方案my.ini/my.cnf 配置文件临时跳过权限在[mysqld]下添加一行skip-grant-tables重启 MySQL无密码登录改密码改完务必删除这一行否则所有人免密登录极度危险