0

0

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

星夢妙者

星夢妙者

发布时间:2025-09-01 08:07:01

|

1119人浏览过

|

来源于php中文网

原创

答案:修改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('新密码');

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

    Peech
    Peech

    Peech是一个为营销团队设计的生成式AI视频平台

    下载
    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
    是为了避免密码立即过期

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

674

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

319

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

344

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1084

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

355

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

671

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

563

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

407

2024.04.29

ip地址修改教程大全
ip地址修改教程大全

本专题整合了ip地址修改教程大全,阅读下面的文章自行寻找合适的解决教程。

81

2025.12.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.5万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 776人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号