zoukankan      html  css  js  c++  java
  • Linux下忘记MySQL的root密码的解决方法

    恢复方法之一

    1、首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。

    2、修改MySQL的登录设置;

    vim /etc/my.cnf 

    [mysqld]的段中加上一句:skip-grant-tables 保存并且退出vim。

    3.重新启动mysqld;

    service mysqld restart # 或 /etc/init.d/mysqld restart

    4、登录并修改MySQL的root密码;

    mysql> USE mysql ; 
    mysql> UPDATE user SET Password = password ('new-password') WHERE User = 'root' ; 
    mysql> flush privileges ; 
    mysql> quit

    5、将MySQL的登录设置修改回来;

    vim /etc/my.cnf 

    将刚才在[mysqld]的段中加上的skip-grant-tables删除;

    保存并且退出vim。

    6、重新启动mysqld;

    service mysqld restart  # 或 /etc/init.d/mysqld restart

    7、恢复服务器的正常工作状态;

    将步骤一中的操作逆向操作。恢复服务器的工作状态。

    恢复方法之二

    如果忘记了MySQL的root密码,可以用以下方法重新设置:

    1、 KILL掉系统里的MySQL进程; 

    killall -TERM mysqld

    2、用以下命令启动MySQL,以不检查权限的方式启动; 

    safe_mysqld --skip-grant-tables &   # 注意:执行后再按 回车键

    3、然后用空密码方式使用root用户登录 MySQL; 

    mysql -u root

    4、修改root用户的密码; 

    mysql> update mysql.user set password=PASSWORD('新密码') where user='root'; 
    mysql> flush privileges; 
    mysql> quit;

    重新启动MySQL,就可以使用新密码登录了。

    恢复方法三(推荐)

    有可能你的系统没有 safe_mysqld 程序(比如我现在用的 ubuntu操作系统, apt-get安装的mysql) , 下面方法可以恢复

    1、停止mysqld; 

    service mysqld stop  # 或 /etc/init.d/mysqld stop

    (您可能有其它的方法,总之停止mysqld的运行就可以了)

    2、用以下命令启动MySQL,以不检查权限的方式启动; 

    /usr/local/mysql/bin/mysqld --skip-grant-tables &

    3、然后用空密码方式使用root用户登录 MySQL; 

    /usr/local/mysql/bin/mysql -u root

    4、修改root用户的密码; 

    mysql> update mysql.user set password=PASSWORD('newpassword') where User='root'; 
    mysql> flush privileges; 
    mysql> quit;

    重新启动MySQL

    servcie mysqld restart  # 或 /etc/init.d/mysql restart

    就可以使用新密码 newpassword 登录了。

    参考:http://lxsym.blog.51cto.com/1364623/477027


    实践心得:

    不知怎么回事,当使用命令

    update mysql.user set password=PASSWORD('snsgou$123456') where User='root'; 

    设置root秘密为 snsgou$123456 时,该密码始终是 登录失败!

    当设置成 123456 这样纯数字密码时,登录成功!

    随后的解决方案/技巧:

    先把root密码设置成比较简单的纯数字的,如 123456,然后再通过 phpMyAdmin工具把root的密码设置成稍复杂点的密码!大功告成!

    phpMyAdmin返回的 sql语句为:

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD( '*********' )

    现在知道才 修改密码后登录失败的原因:

    重启MySQL服务后新密码生效!

  • 相关阅读:
    LeetCode题解之Flipping an Image
    LeetCode 之Find Minimum in Rotated Sorted Array
    LeetCode题解Transpose Matrix
    LeetCode 题解之Minimum Index Sum of Two Lists
    LeetCode题解之Intersection of Two Linked Lists
    LeetCode 题解之Add Two Numbers II
    LeetCode题解之Add two numbers
    href="#"与href="javascript:void(0)"的区别
    有关ie9 以下不支持placeholder属性以及获得焦点placeholder的移除
    ie7下属性书写不规范造成的easyui 弹窗布局紊乱
  • 原文地址:https://www.cnblogs.com/52php/p/5675258.html
Copyright © 2011-2022 走看看