zoukankan      html  css  js  c++  java
  • mysql修改完密码无法再次登陆

    现象:修改完root密码之后,退出mysql,重启mysql服务,然后想用新密码登陆mysql,发现登不上去了。

    一,碰到这种问题的原因是,在给用户改密码的时候没有使用password()函数对密码加密。如下:

    mysql> update user set password='root@123' where user='root';
    Query OK, 3 rows affected (0.00 sec)
    Rows matched: 3 Changed: 3 Warnings: 0

    mysql> quit

    # mysql -u root -p
    Enter password: ********
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    使用select查询mysql库里的user表,可以发现在user表中,密码都是以加密的形式存在的。

    mysql> select * from user where user="root";

    ....

    | localhost | root | *A00C34073A26B40AB4307650BFB9309D6BFA6999 | Y           | Y           | Y           | Y

    ....

    如果直接指定‘set password='root@123' ,mysql就会认为'root@123'是一个加密后的字符串,所以与这个加密字符串对应的

    密码自然不是'root@123'了,而是另外一个位置的值。

    正确的修改root密码的命令应该是

    mysql> update user set password=password('root@123') where user='root';

    二,现在知道原因了。但是我们登不上数据库,怎么办呢。解决方法如下

    1,找到当前数据库进程,并将其杀死

    2,进入到mysql的安装目录,进入到bin目录,执行mysqld_safe --skip-grant-tables (默认安装路径/usr/local/mysql/bin)

    经过这一步,mysql服务就会以一种忽略用户权限的方式启动,就能使用mysql进行无密码登陆了。可以通过ps aux | grep mysql查看服务已经启动

    3,重新打开一个控制台,再次执行'mysql'命令,这次可以无密码登陆了

    4,使用正确的命令重新修改密码

     5,使用密码登陆,OK了

    6,最好使用以下命令刷新一下系统权限(不然别人还可以无密码登陆)

    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

  • 相关阅读:
    第二期网络内生安全试验场,等你来挑战!
    「渗透测试练习」一次上传漏洞的绕过分析
    Javascript日期与C# DateTime 转换
    转帖:网站服务架构
    JQuery ajax url传值与data传值的区别
    ajaxFileUpload上传文件后提示下载的问题
    JS结构
    转载:APP的上线和推广——线上推广渠道
    AppServ与IIS快速共存搭建PHP环境
    android笔记之在WebView中显示ProgressBar的两种方法
  • 原文地址:https://www.cnblogs.com/flyfish919/p/7440868.html
Copyright © 2011-2022 走看看