时间:2021-05-24
如果哪天你忘记了线上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: 03. 将上述三个文件copy回源数据库
4. 获取mysqld的pid,通过kill -HUP `pidof mysqld`方式让mysqld进程重新加载配置文件
[root@keepalived01 ~]# mysql -phelloWarning: 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 -phelloWarning: 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 itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>通过上述输出可以看出,kill -HUP之前,直接用密码hello登录被拒绝,kill -HUP之后,就可以直接登录了。
当然,以上方法仅供参考,在生产上慎用,毕竟安全压倒一切,天晓得哪里会出现问题。
以上就是本文的全部内容,希望可以帮助大家解决root密码忘记的困扰,谢谢大家的阅读。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Linux/MacMySQL忘记密码怎么办?不用担心,下面为大家介绍命令行修改密码。所有的前提都需要获取到root权限1.结束mysql进程//Linuxsud
WDCP控制面板相关命令强制修改mysql的root密码,在忘记mysql密码时有用sh/www/wdlinux/tools/mysql_root_chg.sh
在上篇文章给大家介绍了Mysql5.7忘记root密码及mysql5.7修改root密码的方法Mysql5.7忘记密码快速且简单的解决方法,具体方法详情如下所示
推荐阅读:Mysql5.7忘记root密码及mysql5.7修改root密码的方法Mac安装和卸载Mysql5.7.11的方法系统是cenos6.764位的,默
使用mysql5.5,突然root密码忘记,怎么也登录不了,很急人,该怎么解决呢?下面通过本文给大家介绍mysql5.5忘记root密码的解决办法,需要的朋友参