如果哪天你忘记了线上MySQL数据库的root密码,怎么办?

大家往往会想到skip-grant-tables参数,具体步骤如下:

1. 关闭MySQL数据库,因为root密码忘记了,mysqladmin无法使用,此时,只能通过kill pid关闭程序。

在这里,科普一下kill 和kill -9的区别

默认参数下,kill 发送SIGTERM信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。kill -9 发送SIGKILL信号给进程,告诉进程,你被终结了,请立刻退出。与SIGTERM相比,这个信号不能被捕获或忽略,同时接收这个信号的进程在收到这个信号时不能执行任何清理

所以,万不得已,不要通过kill -9杀掉进程,这可能导致MySQL数据库的物理结构损坏,无法重新启动。

2. 在my.cnf文件[mysqld]部分添加skip-grant-tables参数

3. 登录数据库,修改root账户的密码

以下是修改root密码的三种方式:

1> mysql> set password for 'root'@'localhost'=password('123'); 无需刷新权限表

2> mysql> update mysql.user set password=password("456") where user="root" and host="localhost";

mysql> flush privileges;

3> # mysqladmin -u root password "123"

4. 关闭数据库,注释掉skip-grant-tables参数,重新启动数据库。

上面这种方式虽然不错,但是有个问题,你必须重启数据库,对于线上环境,这可能是不被允许的。

下面来谈谈另一种方法,有点“黑暗科技”的味道

这个方法利用的是mysql.user表还是MyISAM引擎的特性。

1. 将该实例的mysql.user表copy到另一个实例的目录下,譬如,test数据库的目录下

2. 登录另一个实例数据库,修改上述三个文件的权限,并修改root密码

mysql> select user,host,password from test.user;+------+-----------+-------------------------------------------+| user | host      | password                                  |+------+-----------+-------------------------------------------+| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |+------+-----------+-------------------------------------------+1 row in set (0.00 sec)mysql> update test.user set password=password("hello") where user="root" and host="localhost";
Query OK, 1 row affected (0.15 sec)
Rows matched: 1  Changed: 1  Warnings: 0

3. 将上述三个文件copy回源数据库

4. 获取mysqld的pid,通过kill -HUP `pidof mysqld`方式让mysqld进程重新加载配置文件

[root@keepalived01 ~]# mysql -phello
Warning: Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@keepalived01 ~]# kill -HUP 4283[root@keepalived01 ~]# mysql -phello
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2528Server version: 5.6.26 MySQL Community Server (GPL)Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

通过上述输出可以看出,kill -HUP之前,直接用密码hello登录被拒绝,kill -HUP之后,就可以直接登录了。

当然,以上方法仅供参考,在生产上慎用,毕竟安全压倒一切,天晓得哪里会出现问题。

转载于:https://blog.51cto.com/jxwujin/1770265

MySQL密码忘记,怎么办?相关推荐

  1. mysql 密码忘记了怎么办? [仅msyql8版本]

    mysql 密码忘记了怎么办? [仅msyql8版本] 视频:https://edu.csdn.net/course/detail/7912 直接上步骤: ①首先关闭mysql服务 [这个简单就不说了 ...

  2. MySQL密码忘记了如何操作

    目录 MySQL密码忘记了如何操作 连接MySQL时出现:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using pa ...

  3. centos 6.7 mysql密码忘记_CentOS 7安装MySQL5.7以及忘记root密码怎么办

    一.通过Yum命令安装 1.下载rpm安装源 rpm文件地址:https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm ...

  4. Mysql密码忘记怎么修改?

    做开发的过程中多少会用到MySQL数据库,所以忘记密码也就成为一些马虎的同学的家常便饭了,今天发布一个忘记MySQL密码如何修改的文章作为记录. 1>首先将MySQL的服务关闭,两种方法:1,打 ...

  5. Mysql 密码忘记了,呃呃呃

    2016/5/27 本机mysql数据库密码忘记了: 修改密码方法: 1.在菜单栏输入cmd后.右键cmd,选择以管理员的身份运行. 2.关闭数据库:在管理员身份运行的cmd下输入:net stop ...

  6. MySQL密码忘记了?不慌~

    当你可能前一秒设置了MySQL密码,出去吃个饭拿个快递的功夫可能就忘记密码了......这时我们该慌吗???? 不用慌兄弟们,我来解决你们忘记密码的烦恼~ 下面是听了林海峰老师的视频总结 你可以将my ...

  7. MySQL密码忘记-重置密码

    忘记密码,更改密码: 1.cmd-管理员身份运行 分别输入 net stop mysql cd C:\Mysql\bin  ##结合自己mysql的路径 mysqld --console --skip ...

  8. mac忘记mysql初始密码怎么办_Mac操作系统下MySQL密码忘记后重置密码的方法

    安装好MySQL以后,系统给了个默认的的密码,然后说如果忘记了默认的密码......我复制了默认密码就走过了只一步,这一步就是我漫长旅程的开始.他给的密码太复杂了,当然我得换一个,而且我还要假装我不记 ...

  9. MySql 密码忘记了,不用重装

    2019独角兽企业重金招聘Python工程师标准>>> 有些时候,mysql密码忘了,需要去重装,但是这样做比较笨拙.现在给出简单的解决方案. (注意里面的空格和标点符号不要写错了, ...

最新文章

  1. mysql 表引擎无法更新_Mysql安装archive引擎更新表引擎
  2. 直播源码:直播+内容营销新趋势
  3. CSU 1328: 近似回文词
  4. Python入门篇-高级数据类型集合(set)和字典(dict)
  5. 带你看android的内心世界
  6. 1.2 @Override注解
  7. Interface Collector
  8. 人民日报“权威认证”吃鸡装备哪家强,不服来辩!
  9. macOS下的视频格式转换器
  10. 用php实现一个简易的web表单生成器,网络编程PHP Web表单生成器案例分析
  11. ubuntu安装禅道
  12. 将python程序打包成exe
  13. Apache Flink ML 2.0.0 发布公告
  14. 新升级带特效喝酒神器小程序源码-多种游戏支持流量主
  15. ms17-010 php版本,Windows系统SMB漏洞ms17-010补丁下载!
  16. windows更改redis配置文件
  17. 8、实战项目-性能优化实战
  18. 方舟机电有限公司宣布成立新国际总部以支持全球发展
  19. 镭速传输攻克视频素材传输顽疾,大幅提升业务效率
  20. (转)零基础入门--中文命名实体识别

热门文章

  1. java 重载匹配_关于Java重载方法匹配优先级
  2. ‘sort’命令的14个有用的范例
  3. linux环境下python 库模块安装
  4. 修改linux最大文件句柄数
  5. 能够帮助确诊乳腺癌的AI系统诞生,堪称“女性之友”
  6. 手机自动化测试:Appium源码分析之跟踪代码分析四 5
  7. CentOS中用yum安装Nginx
  8. Smartmail外贸CRMBuild1.0版系统白皮书
  9. Linux 命令(98)—— basename 命令
  10. 行为型设计模式(2)—— 模板方法模式(Template Method Pattern)