PHP程序员站--PHP编程开发平台
 当前位置:主页 >> 数据库 >> MySQL >> 

重置MySQL密码

重置MySQL密码

来源:PHP程序员站  作者:PHP程序员站  发布时间:2011-06-26
谁都不想弄丢家门钥匙,但不管多么小心,时间长了,这样的事情总会发生几次。MySQL密码也是一样,把它写在文档上不太安全,记在脑子里又难免会忘记。 如果你忘记了MySQL密码,如何重置它呢? 下面是错误答案: 首先停止MySQL服务,然后使用skip-grant-tables参数启动它

谁都不想弄丢家门钥匙,但不管多么小心,时间长了,这样的事情总会发生几次。MySQL密码也是一样,把它写在文档上不太安全,记在脑子里又难免会忘记。

如果你忘记了MySQL密码,如何重置它呢?

下面是错误答案:

首先停止MySQL服务,然后使用skip-grant-tables参数启动它:

shell> /etc/init.d/mysql stop

shell> mysqld_safe --skip-grant-tables &

 

此时无需授权就可以进入到MySQL命令行,使用SQL重置MySQL密码:

UPDATE mysql.user SET Password=PASSWORD('...') WHERE User='...' AND Host= '...';

FLUSH PRIVILEGES;

 

为什么说它是错误答案?因为在单纯使用skip-grant-tables参数启动服务后,除非数据库服务器屏蔽了外网访问,否则除了自己,其它别有用心的人也可能访问数据库,尽管重置密码所需的时间很短,但俗话说不怕贼偷就怕贼惦记着,任何纰漏都可能酿成大祸。

下面是正确答案:

关键点是:在使用skip-grant-tables参数的同时,还要加上skip-networking参数:


shell> mysqld_safe --skip-grant-tables --skip-networking &

 

接着使用SQL重置密码后,记得去掉skip-networking,以正常方式重启MySQL服务:

shell> /etc/init.d/mysqld restart

上面的方法需要重启两次服务,实际上还能更优雅一点,重启一次即可:

首先需要把用到的SQL语句保存到一个文本文件里(/path/to/init/file):

UPDATE mysql.user SET Password=PASSWORD('...') WHERE User='...' AND Host= '...';

FLUSH PRIVILEGES;

 

接着使用init-file参数启动MySQL服务,

shell> /etc/init.d/mysql stop

shell> mysqld_safe --init-file=/path/to/init/file &

 

此时,密码就已经重置了,最后别忘了删除文件内容,免得泄露密码。

提示:本文用到的参数都是通过命令行mysqld_safe传递的,实际上也可以通过my.cnf。

参考:关于重置密码,官方文档里有专门的描述:http://dev.mysql.com/doc/refman/5.5/en/resetting-permissions.html

 


延伸阅读:
怎样修改MySQL数据库中一个用户的密码
MySQL中忘记root密码的解决方法
Oracle数据库密码文件的使用和维护
配置文件现在需要绝密的短语密码 的解决方法
MySQL修改密码方法总结
MySQL中修改密码及访问限制设置详解
破解mysql的root密码的几种方法
PHP和JS实现普通HTTP上安全地传输密码
在MySQL数据库中如何来复位根用户的密码
easyphp mysql 密码
mysql忘记密码的解决方法
php生成随机密码的几种方法
MySQL中遗忘root密码解决方法
MySQL默认密码修改的方法
配置文件现在需要绝密的短语密码(blowfish_secret)
WordPress.org 重置所有密码 热门插件有后门
Tags: 重置   mysql   密码  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号