mysql 重置 root 密码

mysql 重置 root 密码

Windows

  1. 以管理员身份登陆操作系统。

  2. 关闭MySQL服务

    在服务管理器中停止MySQL服务,或直接在任务管理器中杀死进程。

  3. 创建并保存含有密码赋值语句的文本文件。

    新建文本文件 C:\mysql-init.txt ,写入以下相应语句并保存。

    MySQL 5.7.6 以及后续版本:

    MySQL 5.7.5 以及早期版本:

    或者直接修改user表:

  4. 打开命令行,使用带有参数 --init-file 的 mysqld 来启动服务。

    PS:使用 --console 参数可以将日志信息输出到控制台。

  5. 重新以常规方式启动MySQL服务。

Unix and Unix-Like 

  1. 以 MySQL 服务启动者的账户登录系统,(如 mysql )。

  2. 停止 MySQL 服务:

    pid 文件中写有 MySQL 服务的进程ID,该文件的具体路径取决于服务启动时使用的配置参数。

  3. 创建含有密码赋值语句的文本文件。

    MySQL 5.7.6 以及后续版本:

    MySQL 5.7.5 以及早期版本:

    或者直接修改user表:

  4. 保存文件。本例中保存到 /home/me/mysql-init 。该文件中包含有密码,因此不要将该文件放置在其他用户可见的位置。如果不是以  mysql (服务启动者账户)登陆的,那么需要给 mysql 用户读该文件的权限。

  5. 使用参数 --init-file 启动 MySQL 服务:

    服务启动后将执行 --init-file 指定文件中的语句,修改 'root'@'localhost' 账户的密码。

  6. 服务成功启动后,删除 /home/me/mysql-init

此时你将能够使用新的密码以 root 账户登录到 MySQL 服务了。停止MySQL服务并以常规方式重新启动。

通用方式

  1. 关闭长在运行的 MySQL 服务,使用参数  --skip-grant-tables 启动 MySQL 服务。该参数允许任何用户无需密码验证即可连接到数据库服务且拥有所有权限,同时,该参数也将使账户管理命令如 ALTER USER 和 SET PASSWORD 暂时失效。

    因为这种启动方式是不安全的,因此建议在操作期间同时使用参数 --skip-networking来屏蔽远程客户端的连接。

  2. 使用 mysql客户端直接登陆:

    此时因使用了  --skip-grant-tables 参数,登陆时无需指定用户和密码。

  3. 在 mysql 客户端中,让服务重新加载 grant 表以便账户管理命令可以正常使用:

    随后修改 'root'@'localhost' 账户的密码。

    MySQL 5.7.6 及后续版本:

    MySQL 5.7.5 及更早版本:

此时, root 账户能够使用新的密码登录到 MySQL 服务了。

停止MySQL服务并以常规方式重新启动(不使用 --skip-grant-tables 和--skip-networking参数)。

如果 ALTER USER 等命令执行失败,可以使用下面的命令直接修改 user 表:

注意:直接修改 user 表的方式在新旧版本中有所不同,旧版 mysql 中存放密码的字段是 Password ,因此使用下面命令:

发表评论

电子邮件地址不会被公开。