# MySQL 5.1/5.5 版本密码重置操作 ## 一、文档说明 本文档适用于 \*\*MySQL 5.1/5.5 版本\*\*(低于 5.6.6,无 \`default_password_lifetime\` 等密码过期参数),解决 Windows 系统下 root 密码遗忘 / 重置场景,核心采用 \`password = PASSWORD('新密码')\` 语法(适配低版本字段特性)。 ## 二、操作前提 1. 操作系统:Windows(Win7/Win10/Win11 通用)。 2. 权限要求:所有命令行操作需以「管理员身份」执行。 3. 环境准备:确认 MySQL 安装目录(示例:\`D:\\mantunsci\\ebx-env\\mysql\`)和数据目录(示例:\`D:\\mantunsci\\ebx-data\\mysql\\data\`)。 ## 三、操作步骤 ### 步骤 1:停止 MySQL 服务 #### 方式 1:通过服务面板停止 1. 按下 \`Win + R\`,输入 \`services.msc\` 回车,打开系统服务面板。 2. 找到 MySQL 服务(名称通常为 \`MySQL\`/\`MySQL51\`/\`MySQL55\`),右键选择「停止」。 #### 方式 2:通过命令行停止(推荐) 打开「管理员权限」的 CMD 窗口,执行: \`\`\`cmd # 停止 MySQL 服务(服务名根据实际调整,如 MySQL55) net stop mysql # 强制杀死残留进程(避免端口/目录占用) taskkill /f /im mysqld.exe \`\`\` ### 步骤 2:跳过权限验证启动 MySQL 1. 切换到 MySQL 的 \`bin\` 目录(替换为实际路径): \`\`\`cmd # 示例路径:D:\\mantunsci\\ebx-env\\mysql\\bin D: cd D:\\mantunsci\\ebx-env\\mysql\\bin \`\`\` 1. 执行跳过权限验证的启动命令(核心): \`\`\`cmd # 适配 Windows 免安装版,指定真实数据目录(必填) mysqld --console --skip-grant-tables --shared-memory --datadir=D:\\mantunsci\\ebx-data\\mysql\\data \`\`\` - 成功标志:该 CMD 窗口卡住并输出启动日志,最后一行含 \`ready for connections\`,\*\*不要关闭此窗口\*\*!!\*\*不要关闭此窗口\*\*!! - 失败排查:若提示「权限不足」,需给 MySQL 数据目录分配「完全控制」权限;若提示「datadir 错误」,确认数据目录路径正确。 ### 步骤 3:免密登录 MySQL 并重置密码 1. 打开\*\*新的管理员 CMD 窗口\*\*,切换到 \`bin\` 目录: \`\`\`cmd D: cd D:\\mantunsci\\ebx-env\\mysql\\bin # 免密登录 root 用户(直接回车,无需输入密码) mysql -u root --protocol=memory --skip-password \`\`\` 1. 执行密码重置命令(5.1/5.5 专属): \`\`\`sql -- 切换到 mysql 系统库(存储用户权限的核心库) USE mysql; -- 关闭安全更新模式(避免低版本报错,可选但推荐) SET SQL_SAFE_UPDATES = 0; -- 重置所有 root 账号密码(适配 5.1/5.5 的 password 字段) UPDATE mysql.user SET password = PASSWORD('a1234567') WHERE user = 'root'; -- 恢复安全更新模式(可选) SET SQL_SAFE_UPDATES = 1; -- 强制刷新权限(关键!让密码修改立即生效) FLUSH PRIVILEGES; -- 退出 MySQL EXIT; \`\`\` - 密码说明:\`a1234567\` 为示例密码,可替换为自定义密码(建议字母 + 数字,避免特殊字符)。 - 报错排查:若提示 \`PASSWORD 函数不存在\`,确认是 5.1/5.5 版本,无需修改语法,检查是否切换到 \`mysql\` 库。 ### 步骤 4:恢复正常启动并验证 1. 关闭「跳过权限验证」的 mysqld 窗口(直接关闭即可)。 2. 启动 MySQL 服务: \`\`\`cmd # 服务名根据实际调整,如 MySQL55 net start mysql \`\`\` 1. 验证密码是否生效: \`\`\`cmd # 切换到 bin 目录 D: cd D:\\mantunsci\\ebx-env\\mysql\\bin # 用新密码登录 mysql -u root -p \`\`\` 输入密码 \`a1234567\`,能进入 \`mysql\>\` 提示符即表示重置成功;登录后可执行 \`SHOW DATABASES;\` 验证数据库访问权限。 ## 四、常见问题排查 ### 问题 1:登录提示 \`ERROR 1045 (28000): Access denied\` - 原因:未执行 \`FLUSH PRIVILEGES;\` 或跳过权限模式启动失败。 - 解决:重新执行步骤 2(确保 mysqld 窗口正常运行),登录后重新执行密码重置 + 刷新权限命令。 ### 问题 2:启动 mysqld 提示 \`datadir 路径错误\` - 原因:\`--datadir\` 参数指向空目录,未匹配真实数据目录。 - 解决:打开 MySQL 安装目录下的 \`my.ini\`,找到 \`datadir=\` 配置项,替换为真实路径(如 \`D:\\mantunsci\\ebx-data\\mysql\\data\`)。 ### 问题 3:CMD 执行命令提示「权限不足」 - 原因:未以「管理员身份」运行 CMD。 - 解决:右键 CMD 图标 → 选择「以管理员身份运行」,重新执行所有命令。 ### 问题 4:提示 \`Unknown system variable 'default_password_lifetime'\` - 原因:5.1/5.5 版本无此参数,无需设置。 - 解决:忽略该报错,5.1/5.5 本身无密码过期策略,无需额外配置。 ## 五、注意事项 1. 操作完成后,务必恢复正常启动模式,避免跳过权限验证导致数据库安全风险。 2. 低版本 MySQL 无密码过期机制,重置后的密码长期有效,无需额外设置过期策略。 3. 若需重置指定 host 的 root 密码(如 \`127.0.0.1\`/\`localhost\`),可修改 UPDATE 语句: \`\`\`sql -- 仅重置 localhost 的 root 密码 UPDATE mysql.user SET password = PASSWORD('a1234567') WHERE user = 'root' AND host = 'localhost'; \`\`\`