重置MySQL服务器
也不知道是造了什么虐,昨天搭建好的MySQL服务器今天竟然挂了。。。无奈又写了这篇。这篇文章主要包括两个部分,一是如何重置root密码,二是如何直接重建整个数据库。除非遇到一些比较极端的情况,否则所述的内容可能不会很常用。
1. 重置root密码
重置密码的步骤从网络上的资料看五花八门,所以还是参考官方指南更靠谱。
这个教程给出了3种方案,说是分别对应Windows系统、(类)Unix系统,和通用方案。我采用了其中的“通用方案”,总共分为6个步骤。
1.1 停止mysql服务
|
|
1.2 加上参数–skip-grant-tables重启mysql服务
这个是需要以安全模式直接启动mysqld守护,因此和大多数情况下用service操作不太一样。如果不愿意这么做,也可以把这个参数直接加进配置文件里
教程中还建议一并加上–skip-networking参数。因为在skip-grant-tables模式下,mysql不需要输入密码就可以登录,这是相对不安全的,skip-networking可以阻止通过网络访问mysql。
1.3 直接登录mysql
|
|
1.4 重置密码
因为skip-grant-tables的原因,alter user、set password等操作都会被拒绝,教程里仍然提到了这个办法,可能是兼容性的考虑吧。
此时要修改密码,可以直接修改user表,注意保存密码的字段已经不是老教程里说的password了,而是authentication_string。
1.5 恢复配置并重启服务
就是删除或者注释掉刚加在配置文件里的skip-grant-tables,然后按照正常的方式重新启动mysql服务。
1.6 用新密码登录mysql
|
|
登录成功,但是执行任何操作都提示需要“重置密码”,不过这次就可以使用正常的方式修改密码了。
2. 重建整个数据库
需要重建整个数据库的概率应当比重置root密码更低,一般是数据库发生了比较严重的故障或者损坏,且数据都不太重要或者做好了备份的情况下,直接清除掉现有的全部内容,恢复mysql服务到最原始的状态。总共分为4个步骤。
2.1 停止mysql服务
|
|
2.2 删除数据目录(data_dir)下的全部文件
|
|
如果没有做这一步,下一步会提示“数据目录中存在文件,操作失败”
2.3 重建数据库
|
|
2.4 重启服务
|
|
注意因为数据库已经被重置了,我也不知道新的root密码是什么了,试了下不是空密码,所以还得乖乖参考上一步,重置下密码。