当前位置: 首页 > news >正文

【实战记录】MySQL密码遗忘终极解决方案:详解--skip-grant-tables原理与全平台重置流程

MySQL 密码重置是一个常见但需要谨慎操作的任务。下面我将为您提供多种情况下的详细重置方法,涵盖从记得原密码到完全忘记密码的各种场景。

一、记得原密码的情况(最简单)

方法1:使用 ALTER USER 语句(MySQL 5.7.6+ 推荐)

-- 重置当前用户密码
ALTER USER USER() IDENTIFIED BY 'new_password';-- 重置特定用户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

方法2:使用 SET PASSWORD 语句

-- 重置当前用户密码
SET PASSWORD = PASSWORD('new_password');-- 重置特定用户密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

方法3:使用 mysqladmin 命令行工具

mysqladmin -u root -p'old_password' password 'new_password'

二、忘记密码的情况(需要特殊操作)

这是最常见也最复杂的情况,需要通过跳过权限验证来重置密码。

Linux/Unix 系统重置步骤

步骤1:停止 MySQL 服务

使用 systemd(推荐)
sudo systemctl stop mysql或者
sudo systemctl stop mysqld使用 SysV init
sudo service mysql stop

步骤2:跳过权限检查启动 MySQL

启动 MySQL 并跳过权限表
sudo mysqld_safe --skip-grant-tables --skip-networking &

重要参数说明:

  • ​--skip-grant-tables​​:跳过权限验证
  • ​--skip-networking​​:禁止远程连接,增强安全性

步骤3:无密码连接 MySQL

mysql -u root

步骤4:执行密码重置操作

对于 MySQL 5.7.6 及以上版本:

-- 选择 mysql 系统数据库
USE mysql;-- 更新 root 用户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass@123';-- 刷新权限
FLUSH PRIVILEGES;

对于 MySQL 5.7.5 及以下版本:

USE mysql;-- 更新密码字段
UPDATE user SET authentication_string = PASSWORD('MyNewPass@123') 
WHERE User = 'root' AND Host = 'localhost';-- 或者使用(取决于版本)
UPDATE user SET Password = PASSWORD('MyNewPass@123') 
WHERE User = 'root' AND Host = 'localhost';FLUSH PRIVILEGES;

步骤5:恢复正常模式

退出 MySQL
EXIT;停止 MySQL 服务(先找到 mysqld 进程)
sudo kill `pgrep mysqld`正常启动 MySQL
sudo systemctl start mysql

Windows 系统重置步骤

步骤1:停止 MySQL 服务

以管理员身份运行命令提示符
net stop MySQL或者使用服务名
net stop MySQL80

步骤2:创建初始化文件 在 MySQL 数据目录(如 ​​C:\ProgramData\MySQL\MySQL Server 8.0\​​)创建文件 ​​mysql-init.txt​​,内容如下:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass@123';

步骤3:跳过权限启动并重置密码

切换到 MySQL bin 目录
cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"跳过权限启动并执行初始化文件
mysqld --init-file=C:\ProgramData\MySQL\MySQL Server 8.0\mysql-init.txt --console

步骤4:恢复正常启动

  1. 按 ​​Ctrl + C​​ 停止 MySQL
  2. 正常启动服务:
net start MySQL80
  1. 删除初始化文件

三、使用 Docker 重置密码

如果使用 Docker 运行 MySQL:

进入容器
docker exec -it mysql-container bash在容器内执行重置操作
mysql -u root -p然后使用上述 ALTER USER 命令

或者直接执行:

docker exec -it mysql-container mysql -u root -p -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';"

四、密码策略与安全建议

  1. 检查密码验证策略
-- 查看当前密码策略
SHOW VARIABLES LIKE 'validate_password%';-- 如果密码策略太强,可以临时调整
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 4;
  1. 密码安全建议
  • 使用复杂密码(大小写字母、数字、特殊字符)
  • 定期更换密码
  • 不同环境使用不同密码
  • 示例安全密码:​​MyApp@DB2024!Secure​
  1. 创建备份管理员账户
-- 创建一个备用管理员账户
CREATE USER 'admin_backup'@'localhost' IDENTIFIED BY 'BackupPass@123';
GRANT ALL PRIVILEGES ON *.* TO 'admin_backup'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

五、故障排查与常见问题

  1. 连接被拒绝错误
检查 MySQL 服务状态
sudo systemctl status mysql检查 MySQL 错误日志
sudo tail -f /var/log/mysql/error.log
  1. 权限问题
-- 检查用户权限
SELECT user, host, authentication_string FROM mysql.user;-- 如果 root 用户不存在,创建它
CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
  1. 套接文件问题(Linux)
如果无法通过 socket 连接
mysql -u root -p -S /var/run/mysqld/mysqld.sock或者检查 socket 文件权限
sudo chmod 755 /var/run/mysqld/mysqld.sock

六、一键重置脚本(Linux)

创建重置脚本 ​​reset_mysql_password.sh​​:

!/bin/bash
echo "停止 MySQL 服务..."
sudo systemctl stop mysqlecho "以跳过权限模式启动 MySQL..."
sudo mysqld_safe --skip-grant-tables --skip-networking &echo "等待 MySQL 启动..."
sleep 5echo "重置密码..."
mysql -u root << EOF
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass@123';
FLUSH PRIVILEGES;
EXIT;
EOFecho "停止 MySQL 服务..."
sudo kill `pgrep mysqld`echo "正常启动 MySQL..."
sudo systemctl start mysqlecho "密码重置完成!新密码: MyNewPass@123"

使用方法:

chmod +x reset_mysql_password.sh
sudo ./reset_mysql_password.sh

重要安全提醒

  1. 立即修改默认密码:重置后第一时间修改为强密码
  2. 删除历史记录:清除包含密码的命令历史
  3. 限制访问:确保只有授权用户可以访问 MySQL
  4. 定期审计:定期检查用户权限和密码强度

通过以上方法,您应该能够成功重置 MySQL 密码。建议在生产环境中操作前先在测试环境验证流程。 另外搭配便捷的80kmMYSQL备份工具,可定时备份、异地备份,MYSQL导出导入。可本地连接LINUX里的MYSQL,简单便捷。可以大大地提高工作效率喔。

http://www.dtcms.com/a/467391.html

相关文章:

  • Linux命令之pgrep用法
  • 网站设计要注意事项网站开发工程师的经验
  • 网站备案 座机wordpress 搭建论坛
  • 保定做网站建设河南网站怎么备案
  • 做网站和维护要多少钱wordpress朋友圈图片不显示
  • 零基础新手小白快速了解掌握服务集群与自动化运维(十一)MySQL数据库基础
  • 超越提示词:Anthropic 揭示下一代AI智能体的关键——上下文工程
  • 永康建设局网站天台县低价网站建设
  • 大数据存储优化:从 Mysql 到 Redis Bitmap ,高效存储用户签到记录
  • 网站地图怎么做的晋江做网站模板
  • 卷积神经网络CNN(一):卷积操作
  • RynnVLA-001-7B: 使用人类演示增强机器人Manipulation--达摩院--2025.9.18--开源
  • 网站怎么更新数据云南模板网站建设公司
  • 三维网格(mesh)
  • 做网站需要哪些人才建设网站的心得
  • 银川网站建设是什么19楼网站模板
  • 建设旅游网站的目标大型网站建设基本流程
  • 卷积神经网络CNN(二):对于图像处理的意义
  • 钢材料 网站建设 中企动力网站备案单位查询
  • 高明专业网站建设哪家好永久免费无代码开发平台网站
  • 基于MATLAB/Simulink的飞行器六自由度控制仿真
  • OpenAI 发布Sora2,还发布了 1 个社交应用(附邀请)
  • 百度网站收录入口橙色的网站
  • 【LeetCode热题100(39/100)】对称二叉树
  • 卖产品怎么做网站湖北省市政工程建设官方网站
  • SHAP可视化代码详细讲解
  • 网站建设小wordpress2019谷歌字体
  • 赤峰是住房和城乡建设局网站在哪买网站空间
  • 泉州机票网站建设百度搜索 手机
  • 娄底营销型网站建设网站开发招聘 领英