清泛IT社区App Inventor 2 中文社区

搜索

扫码访问移动社区 移动社区,您的掌上技术专家

关注我,精彩不错过! 关注我,精彩不错过!

扫码安装最新版AI伴侣 最新版AI伴侣v2.72

Aia Store .aia 源码一站式解决方案 发布日志AI2连接测试ai2Starter模拟器

开通会员送SVIPApp Inventor 2 拓展有奖征文 VIP会员享专有教程,免费赠送基础版*技术支持服务! AI2入门必读中文文档中文教程IoT专题

查看: 800|回复: 0
打印 上一主题 下一主题

正确重置MySQL密码

  • TA的每日心情
    开心
    2024-02-17 18:16
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    546

    主题

    715

    帖子

    1万

    积分

    管理员

    这里没有广告...

    Rank: 9Rank: 9Rank: 9

    积分
    10709
    QQ
    跳转到指定楼层
    楼主
    发表于 2015-11-23 15:46:50 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    谁都不想弄丢家门钥匙,但不管多么小心,时间长了,这样的事情总会发生几次。MySQL密码也是一样,把它写在文档上不太安全,记在脑子里又难免会忘记。
    如果你忘记了MySQL密码,如何重置它呢?

    下面是错误答案:
    首先停止MySQL服务,然后使用skip-grant-tables参数启动它:
    shell> /etc/init.d/mysql stopshell> 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。
    参考:关于重置密码,官方文档里有专门的描述:How to Reset the Root Password

    转自:http://huoding.com/2011/06/12/85
    清泛网 - 专注IT技能提升
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    © 2024 tsingfun.com, Inc.  沪ICP备2020034476号-1  沪公网安备31011702000040号

    GMT+8, 2024-09-20 07:15 , Processed in 0.022903 second(s), 36 queries .