一、如何解决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登录,登录失败,只能使用密码登录。