当前位置:首页 > 虚拟机 > 正文

虚拟机mysql密码忘记了怎么办


一、如何解决MySQL的root密码忘记的问题_MySQL
如果有一天你忘记了在线MySQL数据库的root密码怎么办?

大家经常会想到Skip-grant-tables参数。

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

这里我们来了解一下kill和kill-9之间的区别。

在其默认参数中,kill向进程发送一个SIGTERM信号,告诉它应该终止该进程。向下,停止执行并退出。

Kill-9向进程发送SIGKILL信号,通知该进程已被终止并立即终止该进程。与SIGTERM相比,该信号无法被捕获或忽略。同时,接收到此信号的进程在收到此信号时无法执行清理操作。

因此,不要将终止进程作为最后的手段。杀死-9。这可能会损坏MySQL数据库的物理结构,从而导致其无法重新启动。

2.将Skip-grant-tables参数添加到文件的[mysqld]部分。

3.登录数据库并更改root密码。account

这里提供三种修改root密码的方法:

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

2>mysql>tpassword=password("456")whereuser="root"andhost="localhost";

mysql>flushprivileges;

3>#mysqladmin-urootpassword"123"

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

上面的方法不错,但是存在需要重启数据库的问题,在线环境下可能无法接受。

让我们谈谈另一种有点“黑暗技术”倾向的方法。

此方法使用表或MyISAM引擎的属性。

1.将此实例中的表复制到另一个实例上的目录,例如测试数据库的目录。

2.修改以上三个文件的权限,并修改root密码。

mysql>selectuser,host,;

+------+-----------+------------------+

|用户|主机|密码|

+------+----------------+------------------------------+

|root|localhost|*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9|

+------+---------------+-------------------+

1rowinset(0.00秒)

mysql>tpassword=密码("你好")whereuser="root"andhost="localhost";

QueryOK,1rowImpact(0.15秒)

行匹配:1Changed:1Warnings:0

3.更改以上内容。将这三个文件复制回源数据库。

4.获取mysqld的pid并通过kill-HUP`pidofmysqld`强制mysqld进程重新加载配置文件。
/>[root@keepalived01~]#mysql-phello

警告:命令使用密码线路接口可能不安全。

ERROR1045(28000):用户'root'@'localhost'的访问被拒绝,密码为:YES。

[root@keepalived01~]#kill-HUP4283

[root@keepalived01~]#mysql-phello

警告:在命令行界面中使用密码可能不安全。

欢迎使用dsendwith;or\g。

MySQL连接数为2528

服务器版本:5.6.26MySQLCommunityServer(GPL)

Copyright(c)2000,2015,甲骨文和/或其附属公司。保留所有权利。

Oracle是OracleCorporation和/或其附属公司的注册商标。其他名称可能是其各自所有者的商标。

如需帮助,请键入“help;”或“\h”。输入“\c”清除当前输入。

mysql>

正如您在上面的输出中看到的,在kill-HUP之前,使用hello密码直接登录被拒绝。这是可能的。HUP,您可以立即登录。

当然,以上方法仅供参考,在生产过程中一定要谨慎使用。首先,安全是最重要的,天知道哪里会出现问题。


二、忘记MySQL的root密码该怎么办
在日常的MySQL开发或维护过程中,常常不可避免地会遇到一些问题或错误,例如密码丢失、表损坏等。下面总结了MySQLroot密码经常忘记的解决方法:

1.登录数据库所在服务器,手动killMysql进程

关闭进程的命令为:destroyprocessnumber(linux下)
关闭进程的命令为:taskkill进程ID(win下)
如何查看进程ID?
我们都知道MySQL进程号通常保存在Mysql数据目录下,这里记录了Mysql服务进程号。文件名为,如下所示,其中YEGZT8JOIIU2LKY是主机名。




在Linux下查看进程,在win下使用ps命令,也可以通过任务列表查看进程号,



打开文件可以看到里面只写了进程号




现在为了方便,我主要介绍一下操作win下打不开。虚拟机正测试中。如果我们对taskkill命令不熟悉,可以通过taskkill/?查看该命令。



2.使用_skip-grant-tables选项重启MySQL服务

linux下
语法:./bin/mysqld_safe_skip-grant-tables
_skip-grantoption-tables代表启动mysql
(注意,Windows下安装的是Mysql,我用的是mysqld_skip-grant-tables)

3.空密码用户连接MySQL并更改root密码



修改如下


对于_skip-grant-tables用于启动,setpassword命令失败。



使用update语句直接更新mysql数据库中的users表。




4.更新权限



5.注销后再次登录

。,我注意到如果使用mysql-uroot登录,登录失败,只能使用密码登录。