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

Mysql 忘记密码怎么重置密码(详细步骤)

每种方法都有其适用的情况,根据具体情况选择合适的方法。无论选择哪种方法,请务必在重置密码后及时删除临时用户并重新启动 MySQL 服务。

一、使用 mysqladmin 重置密码

  • 停止服务

    # systemctl 启动的使用这个停止
    $ sudo systemctl stop mysql# mac 本机,可以使用这个或可视化界面停止
    $ sudo mysql.server stop
    
  • 使用 mysqld_safe 命令启动 MySQL 服务,跳过权限检查,执行后可能需要回车下

    $ sudo mysqld_safe --skip-grant-tables &
    
  • 登录 MySQL 服务,并使用 mysqladmin 命令重置密码

    # 无需密码,会直接登入
    $ mysql -u root  # 刷新权限
    mysql> FLUSH PRIVILEGES;  # 这里的 'new_password' 是要设置的新密码,可以根据需要进行修改。此命令将修改 root 用户在本地 MySQL 服务上的密码。
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';# 修改好后退出 MySQL
    mysql> exit
    
  • 停止 MySQL 服务,并重新启动密码登入即可

    # 1、停止 MySQL 服务上面有,第一条就是# 2、重启启动 MySQL 服务,并使用密码登入
    # systemctl 启动的使用这个重新启动
    $ sudo systemctl start mysql
    # mac 本机,可以使用这个或可视化界面启动
    $ sudo mysql.server start# 3、密码登录
    $ mysql -u root -p# 附:如果再次使用 mysql -u root 这样免密登录是不成功的,停止重启后会失效。
    

二、使用 mysqld 重置密码

  • 停止服务

    # systemctl 启动的使用这个停止
    $ sudo systemctl stop mysql# mac 本机,可以使用这个或可视化界面停止
    $ sudo mysql.server stop
    
  • 使用 mysqld_safe 命令启动 MySQL 服务,跳过权限检查,执行后需要回车下

    $ sudo mysqld_safe --skip-grant-tables &
    
  • 登录 MySQL 服务,并创建新的临时用户,拥有 root 权限

    # 无需密码,会直接登入
    $ mysql -u root  # 刷新权限
    mysql> FLUSH PRIVILEGES;  # 创建一个临时用户 temp_root 及 temp_password
    mysql> CREATE USER 'temp_root'@'localhost' IDENTIFIED BY 'temp_password';  # 设置权限
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'temp_root'@'localhost' WITH GRANT OPTION;# 修改好后退出 MySQL
    mysql> exit
    
  • 停止 MySQL 服务,并重新启动密码登入,并使用 ALTER 命令修改 root 用户密码

    # 1、停止 MySQL 服务上面有,第一条就是# 2、重启启动 MySQL 服务,并使用密码登入
    # systemctl 启动的使用这个重新启动
    $ sudo systemctl start mysql
    # mac 本机,可以使用这个或可视化界面启动
    $ sudo mysql.server start# 3、临时用户密码登录
    $ mysql -u temp_root -p# 4、这里的 'new_password' 是要设置的新密码,可以根据需要进行修改。此命令将修改 root 用户在本地 MySQL 服务上的密码。
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';# 5、修改好后退出 MySQL
    mysql> exit# 6、停止 MySQL 服务上面有,第一条就是# 附:如果再次使用 mysql -u root 这样免密登录是不成功的,停止重启后会失效。
    
  • 再次使用 mysqld_safe 命令启动 MySQL 服务,跳过权限检查,删除临时用户

    $ sudo mysqld_safe --skip-grant-tables &  $ mysql -u root  mysql> FLUSH PRIVILEGES;  mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'temp_root'@'localhost';  mysql> DROP USER 'temp_root'@'localhost';  mysql> exit
    
  • 再次重启 MySQL 服务,并使用修改好的 root 密码登入

    # 1、停止 MySQL 服务上面有,第一条就是# 2、重启启动 MySQL 服务,并使用密码登入
    # systemctl 启动的使用这个重新启动
    $ sudo systemctl start mysql
    # mac 本机,可以使用这个或可视化界面启动
    $ sudo mysql.server start# 3、密码登录
    $ mysql -u root -p
    

三、使用 MySQL 安全性模式重置密码

  • 停止服务

    # systemctl 启动的使用这个停止
    $ sudo systemctl stop mysql# mac 本机,可以使用这个或可视化界面停止
    $ sudo mysql.server stop
    
  • 启动 MySQL 安全性模式

    $ sudo mysqld_safe --skip-grant-tables --skip-networking &
    
  • 登录 MySQL 服务,并使用 mysqladmin 命令重置密码

    # 无需密码,会直接登入
    $ mysql -u root  mysql> FLUSH PRIVILEGES;  # 这里的 'new_password' 是要设置的新密码,可以根据需要进行修改。此命令将修改 root 用户在本地 MySQL 服务上的密码。
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';# 修改好后退出 MySQL
    mysql> exit
    
  • 停止 MySQL 安全性模式

    $ sudo killall mysqld_safe# 如果在本地机器上执行上面命令无法停止安全模式,可以通过杀死进程方式解决
    # 1、列出 mysqld_safe 的进程
    $ ps aux | grep mysqld_safe# 2、拿到 PID 全部杀死,应该是第二列,就几位纯数字的,如果不知道可以单独输出 $ ps aux 看一下。
    $ sudo kill -9 xxx xxx ...
    
  • 停止 MySQL 服务,并重新启动密码登入即可

    # 1、停止 MySQL 服务上面有,第一条就是,如果通过 $ sudo kill 可以一起就杀死了。# 2、重启启动 MySQL 服务,并使用密码登入
    # systemctl 启动的使用这个重新启动
    $ sudo systemctl start mysql
    # mac 本机,可以使用这个或可视化界面启动
    $ sudo mysql.server start# 3、密码登录
    $ mysql -u root -p# 附:如果再次使用 mysql -u root 这样免密登录是不成功的,停止重启后会失效。
    

四、使用 my.cnf 重置密码

  • 该方式跟上面 方式一 基本一致,只是将命令中的跳过权限指令写到 my.cnf 中,修改好后再移除。

  • 在修改 my.cnf 之前一定要关闭 mysql 进程,关闭 mysql,不然可能会遇到 mysql 的 sock 不能连接的问题!

  • 停止服务

    # systemctl 启动的使用这个停止
    $ sudo systemctl stop mysql# mac 本机,可以使用这个或可视化界面停止
    $ sudo mysql.server stop
    
  • 打开 my.cnf,没有则创建一个

    $ sudo vim /etc/my.cnf
    

    进入 vim 编辑器编辑之后,找到 [mysqld],按键盘的 i 键进入编辑模式,在 [mysqld] 后面任意一行添加 skip-grant-tables 用来跳过密码验证的过程。按 ESC 退出编辑,键入 :wq,回车即保存并退出。

    [mysqld]
    skip-grant-tables
    
  • 启动 mysqld 服务

     # systemctl 启动的使用这个重新启动
    $ sudo systemctl start mysql# mac 本机,可以使用这个或可视化界面启动
    $ sudo mysql.server start
    
  • 登录 MySQL 服务,并使用 mysqladmin 命令重置密码

    # 无需密码,会直接登入
    $ mysql -u root  # 这里的 'new_password' 是要设置的新密码,可以根据需要进行修改。此命令将修改 root 用户在本地 MySQL 服务上的密码。
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';# 刷新权限
    mysql> FLUSH PRIVILEGES;  # 修改好后退出 MySQL
    mysql> exit
    
  • 再次打开 my.cnf,移除刚才添加的 skip-grant-tables,保存重启 MySQL 服务,并使用新的密码登入。

http://www.lryc.cn/news/101805.html

相关文章:

  • 机器学习深度学习——图像分类数据集
  • 【PWN · 栈迁移】[BUUCTF]ciscn_2019_es_2
  • 网络编程(13): 网络通信常用命令(后续待补充)
  • flask创建数据库连接池
  • C语言手撕顺序表
  • 常见的排序算法
  • C#如何使用SQLite数据库?
  • 如何将表格中的状态数据转换为Tag标签显示
  • centos中修改防火墙端口开放配置
  • 程序设计 算法基础
  • 【数据结构】之十分好用的“链表”赶紧学起来!(第一部分单向链表)
  • ubuntu开机自启动
  • Git将其他分支合并至主分支
  • Python+request+pytest 接口自动化测试框架入门(与unittest的比较)
  • 数据结构——复杂度
  • 使用goldengate 迁移Oracle到postgresql
  • ESP-C3入门20. CentOS开发环境及Jenkins流水线
  • 服务器被爬虫恶意攻击怎么办?
  • JavaScript正则表达式之座机号/手机号验证校验规则
  • 黑客学习手册(自学网络安全)
  • 获取非叶子节点的grad(retain_grad()、hook)【为了解决grad值是None的问题】
  • JMeter(八):响应断言详解
  • 【网络编程】IO复用的应用一:非阻塞connect
  • Spring注解开发,bean的作用范围及生命周期、Spring注解开发依赖注入
  • C#设计模式之---原型模式
  • STM32入门学习之外部中断
  • Jenkins 配置maven和jdk
  • Leetcode | Binary search | 22. 74. 162. 33. 34. 153.
  • 生命在于折腾——面试问题汇总
  • <Java>Map<String,Object>中解析Object类型数据为数组格式