新闻中心

MySQL修改root密码有哪些命令?MySQL重设root密码的6种命令行方案

2025-09-01
浏览次数:
返回列表
答案:修改MySQL的root密码有六种方法,取决于是否记得旧密码及MySQL版本。若记得旧密码,可用mysqladmin命令或ALTER USER、SET PASSWORD语句修改;若忘记密码,需使用--skip-grant-tables模式启动MySQL,跳过权限验证重置密码。MySQL 5.7.6及以上推荐ALTER USER,8.0版本需注意caching_sha2_password插件兼容性,可指定mysql_native_password插件以兼容旧客户端,重置后务必重启服务并刷新权限。

mysql修改root密码有哪些命令?mysql重设root密码的6种命令行方案

修改MySQL的root密码,在命令行下确实有好几种办法,具体用哪种,往往取决于你是否还记得旧密码,以及你用的MySQL版本。简单来说,如果你能正常登录,那改密码就是一句话的事;如果密码忘了,那就得走一套“曲线救国”的流程,让MySQL在启动时不检查权限,然后进去改。

我整理了六种在命令行下重设或修改MySQL root密码的方案,每种都有它的适用场景和一些需要注意的地方。

  1. 使用

    mysqladmin
    命令 (当旧密码已知时) 这是最直接,也最简单的一种方式,如果你还记得root的旧密码,那么用
    mysqladmin
    来改是最省心的。

    mysqladmin -u root -p'旧密码' password '新密码'

    这里需要注意,

    -p
    后面直接跟着旧密码,中间没有空格。如果你的旧密码里有特殊字符,最好用引号括起来。这种方式,说实话,我个人觉得是最“优雅”的,因为它不需要你进入MySQL客户端,一步到位。

  2. 使用 SQL

    ALTER USER
    命令 (MySQL 5.7.6+ 及 8.0+ 推荐) 如果你已经能够以root或其他拥有足够权限的用户登录到MySQL客户端,那么使用SQL语句来修改密码是更通用也更推荐的做法,特别是对于新版本的MySQL。 登录MySQL客户端:

    mysql -u root -p

    输入旧密码后,在MySQL提示符下执行:

    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

    这个命令是MySQL 5.7.6版本之后引入的,也是8.0版本推荐的修改用户密码的方式。它更符合SQL标准,也更清晰地表达了“修改用户”的意图。我个人偏爱这种,因为它语义明确,出错的概率小。

  3. 使用 SQL

    SET PASSWORD
    命令 (MySQL 5.7.6 之前及兼容)
    ALTER USER
    出现之前,或者在一些老旧的MySQL版本中,
    SET PASSWORD
    是修改当前用户密码的常用方式。同样,你需要先登录MySQL客户端。

    mysql -u root -p

    在MySQL提示符下执行:

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码');

    或者对于某些版本,也可以直接:

    Waifulabs Waifulabs

    一键生成动漫二次元头像和插图

    Waifulabs 347 查看详情 Waifulabs
    SET PASSWORD = PASSWORD('新密码');

    (这会修改当前登录用户的密码)。需要注意的是,

    PASSWORD()
    函数在MySQL 8.0中已经被弃用,所以如果你用的是新版本,最好还是用
    ALTER USER
    。我记得以前踩过这个坑,旧脚本在新版本上直接报错,当时就有点懵。

  4. 通过跳过权限验证表 (

    --skip-grant-tables
    ) 重置 (最常用应急方案) 这是当你彻底忘记root密码时的“救命稻草”。这个方法的核心思想是:让MySQL服务器启动时,不加载权限表,这样任何人都可以无密码登录,然后你就可以进去修改root密码了。 步骤:

    • 停止MySQL服务:
      sudo systemctl stop mysql  # 或者 service mysql stop

      (具体命令取决于你的操作系统和MySQL安装方式)

    • 以跳过权限表模式启动MySQL:
      sudo mysqld_safe --skip-grant-tables &  # 或 sudo mysqld --skip-grant-tables &

      (注意

      &
      让它在后台运行,或者直接用
      systemctl
      启动,但需要修改配置文件) 如果你是systemd系统,更稳妥的办法是:

      sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
      sudo systemctl restart mysql

      (完成后记得

      sudo systemctl unset-environment MYSQLD_OPTS
      并重启MySQL)

    • 无密码登录MySQL:
      mysql -u root
    • 刷新权限并修改密码: 登录后,首先要刷新权限,因为
      --skip-grant-tables
      模式下,你可能会遇到一些操作受限的情况。
      FLUSH PRIVILEGES;
      ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
      -- 或者对于旧版本
      -- UPDATE mysql.user SET authentication_string = PASSWORD('新密码') WHERE User = 'root';
      -- FLUSH PRIVILEGES;
    • 退出MySQL客户端并正常重启MySQL服务:
      exit;
      sudo systemctl stop mysql
      sudo systemctl start mysql

      这一整套流程,虽然看起来步骤多,但非常实用。我个人觉得,作为DBA或者开发者,掌握这个是基本功。

  5. 针对 MySQL 8.0+ 的特定重置流程 (结合

    ALTER USER
    --skip-grant-tables
    )
    MySQL 8.0 引入了
    caching_sha2_password
    作为默认的认证插件,这导致一些旧的修改密码方式不再适用,或者需要额外的步骤。在通过
    --skip-grant-tables
    进入后,修改密码的命令还是
    ALTER USER
    ,但需要确保用户使用的认证插件是兼容的。 流程与方案4类似,但在MySQL客户端内部修改密码时,需要注意:

    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码' PASSWORD EXPIRE NEVER;
    -- 如果需要强制指定认证插件,例如为了兼容旧客户端:
    -- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

    PASSWORD EXPIRE NEVER
    是为了避免密码立即过期

以上就是MySQL修改root密码有哪些命令?MySQL重设root密码的6种命令行方案的详细内容,更多请关注其它相关文章!


# 的是  # shopify评论对SEO更友好  # seo英文文章写作  # 推广全网营销价格多少钱  # 上海网站设计建设公司  # 云狐网络seo建站  # 敦煌网站推广费用多少钱  # 怎么推广项目资源网站  # 兴义市网站优化公司  # 营销还是推广重要  # 沈阳seo优化实战  # 重启  # 这是  # mysql  # 需要注意  # 修改密码  # 镜像  # 命令行  # 新密码  # 离线  # 客户端  # 权限验证  # sql语句  # 操作系统  # word  # mysql修改密码 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 在J*a里如何理解依赖关系的方向_依赖方向在模块结构中的作用  解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南  谷歌推RCS信息存档功能:公司可监控员工私密信息!  qq游戏跨平台入口_qq游戏多设备同步登录  C++ vector二维数组定义_C++ vector of vector用法  J*aScript DOM操作:高效清空列表元素的策略与实践  Eclipse怎么运行工程_Eclipse工程运行配置说明  12306怎么选座位选到安静区_12306选座安静区域选择策略  Win11怎么合并任务栏图标 Win11开启任务栏合并减少图标占空间【方法】  C++ string find函数返回值npos详解_C++字符串查找失败的判断条件  QQ网页版官方账号入口 QQ网页版网页版登录指南  邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策  荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】  JUnit5/Mockito:优雅测试内部依赖与异常处理的实践  在FastAPI中利用lifespan与依赖注入高效管理Redis连接池  在J*a中如何使用Stream.map转换元素_Stream映射操作解析  荒野行动PC版怎么注册_荒野行动PC版账号注册详细流程图文教程  PHP中获取MongoDB服务器运行时间(Uptime)的专业指南  怎样更改Windows系统的默认安装路径_避免C盘爆满的终极设置【技巧】  探索高级语言到原生C/C++的转译:挑战与内存管理策略  不会效仿卡普空!《铁拳》制作人澄清:不采取赛事付费|直播|  漫蛙漫画网页端入口 漫蛙2官方正版漫画站点  漫蛙漫画官方主页入口 漫蛙MANWA网页直达访问链接  一加 14R 快充无反应_一加 14R 充电优化  葱吃多了会怎样 葱吃多了会伤胃吗  HTML元素状态管理:根据DIV内容动态启用/禁用按钮  汽水音乐网页版使用入口_汽水音乐电脑版播放指南  Discord Slash 命令响应超时问题的异步解决方案  如何在CSS中使用visited与link控制链接颜色_visited link伪类配合  高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】  深入理解J*a合成构造器:何时以及为何阻止其生成  Go语言中对Map值调用带指针接收者方法:原理与最佳实践  AO3官网镜像链接 Archive of Our Own同人文在线浏览  2026年发布! 美少女养成动作RPG《神剑少女战记》发布实机演示  html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】  写好的html代码怎么运行出来_运行写好的html代码方法【教程】  AO3最新入口2025公告_AO3中文官网合集  为什么简单的XML文件也会解析失败? 检查隐藏的非打印字符(如BOM)的方法  《GTA6》开发画面疑似泄露!这次可不是AI了  百度网盘网页版入口 百度网盘网页版官方登录网址  fishbowl官网免费版 fishbowl养鱼网站入口  电脑安装程序提示“错误1722”怎么办_Windows Installer服务问题解决【教程】  c++中的std::basic_string的SSO优化_c++短字符串优化深度解析  在python-socketio事件处理器中安全访问Flask应用上下文  如何在 Excel Online 和 Google 表格中更改日期格式  Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法  深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量  Kafka Streams中基于消息头条件过滤消息的实现指南  夸克浏览器图书入口 夸克手机浏览器阅读入口  J*aScript数组对象转换:按指定键分组与值收集 

搜索