0

0

MySQL数据库root密码如何更改?MySQL重设root密码的5种操作指南

蓮花仙者

蓮花仙者

发布时间:2025-08-13 08:52:01

|

1274人浏览过

|

来源于php中文网

原创

如果知道旧密码,可使用alter user语句或mysqladmin命令直接修改;若忘记密码,则需通过--skip-grant-tables或--init-file方式绕过验证重置密码。具体操作为:已知密码时,登录mysql执行alter user 'root'@'localhost' identified by '新密码';并刷新权限,或使用mysqladmin -u root -p '旧密码' password '新密码'命令修改;忘记密码时,先停止mysql服务,再以--skip-grant-tables模式启动,无需密码登录后执行flush privileges和alter user语句修改密码,最后正常重启服务;也可创建包含修改密码命令的sql初始化文件,通过--init-file参数启动mysql自动执行该文件完成密码重置,两种方法均能有效恢复对数据库的访问权限。

MySQL数据库root密码如何更改?MySQL重设root密码的5种操作指南

更改MySQL数据库的root密码,这事儿说起来简单,但真遇到忘记密码或者需要定期更新的场景,方法就得跟着变了。核心思路无非两种:一种是你还知道旧密码,那直接改就是了;另一种是密码彻底忘了,这时候就得想办法“绕过”验证,或者利用MySQL的一些安全模式特性来重置。选对方法,能让你省去不少麻烦。

解决方案

1. 使用

ALTER USER
语句(适用于已知旧密码或有足够权限的情况)

这是MySQL 5.7.6及更高版本推荐的方式,也是我个人最喜欢的一种,因为它语义清晰,符合SQL标准。如果你能以root用户身份登录MySQL,或者有其他用户拥有修改root密码的权限,这简直就是最优雅的方案。

mysql -u root -p
-- 输入当前root密码

-- 登录后执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES; -- 虽然ALTER USER通常会自动刷新,但手动刷新一下总是好的习惯,以防万一。

注意,

'root'@'localhost'
表示本地连接的root用户。如果你有其他主机名或IP地址的root用户,记得把
localhost
替换成对应的主机名或
%

2. 使用

mysqladmin
命令行工具(适用于已知旧密码)

mysqladmin
是MySQL自带的一个管理工具,在命令行下操作起来非常直接。如果你习惯在终端里一气呵成,这个方法就很方便。

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

如果你的旧密码包含特殊字符,可能需要用引号包裹起来。这个命令执行后,会直接更新密码。对我来说,这种方式的优点是快捷,不用进入MySQL客户端。

3. 通过跳过授权表(

--skip-grant-tables
)重置密码(适用于忘记密码)

这是“忘记密码”场景下的经典招数,有点像Windows安全模式,绕过权限验证,直接进去改。操作时需要停掉MySQL服务。

  • 停止MySQL服务:

    # 根据你的系统,可能是:
    sudo systemctl stop mysql
    # 或者
    sudo service mysql stop
  • 启动MySQL,跳过授权表:

    sudo mysqld_safe --skip-grant-tables &
    # 或者如果你是SystemD系统,可能需要这样:
    # sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
    # sudo systemctl start mysql
    # 然后再取消设置:
    # sudo systemctl unset-environment MYSQLD_OPTS

    mysqld_safe
    会在后台运行MySQL实例。

    ArrowMancer
    ArrowMancer

    手机上的宇宙动作RPG,游戏角色和元素均为AI生成

    下载
  • 无需密码登录MySQL并修改密码:

    mysql -u root
    -- 登录后执行:
    FLUSH PRIVILEGES; -- 这一步至关重要,让MySQL重新加载权限表
    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
  • 停止MySQL并正常启动:

    sudo killall mysqld_safe # 如果你用的是mysqld_safe
    # 或者
    sudo systemctl stop mysql # 如果你用的是SystemD
    sudo systemctl start mysql

    现在,你可以用新密码登录了。这个方法虽然有点“暴力”,但非常有效。

4. 使用初始化文件(

--init-file
)重置密码(适用于忘记密码,更自动化)

这个方法和

--skip-grant-tables
类似,都是为了在忘记密码时重置,但它更适合自动化脚本或者你想一次性执行多条命令的场景。它在MySQL启动时执行一个SQL脚本。

  • 停止MySQL服务。

  • 创建一个临时SQL文件,例如

    reset_password.sql

    -- reset_password.sql
    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
    FLUSH PRIVILEGES;

    请确保这个文件的权限设置得当,不要让不该看的人看到密码。

  • 启动MySQL,并指定初始化文件:

    sudo mysqld_safe --init-file=/path/to/reset_password.sql &
    # 或者对于SystemD:
    # sudo systemctl set-environment MYSQLD_OPTS="--init-file=/path/to/reset_password.sql"
    # sudo systemctl start mysql
    # sudo systemctl unset-environment MYSQLD_OPTS

    MySQL启动后会自动执行

    reset_password.sql
    中的命令。

  • 停止MySQL并正常启动。

    sudo

相关专题

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

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

683

2023.10.12

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

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

323

2023.10.27

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

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

348

2024.02.23

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

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

1096

2024.03.06

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

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

358

2024.03.06

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

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

697

2024.04.07

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

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

577

2024.04.29

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

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

418

2024.04.29

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

1

2026.01.21

热门下载

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

精品课程

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

共48课时 | 1.9万人学习

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

共3课时 | 0.3万人学习

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

共1课时 | 805人学习

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

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