Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 500|回复: 0

【转】MySQLroot用户忘记密码解决方案(安全模式,修改密码的三种方式)

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-7-11 14:28:17 | 显示全部楼层 |阅读模式

    文章出自:http://www.2cto.com/database/201412/358128.html

    1.关闭正在运行的MySQL
    2.启动MySQL的安全模式,命令如下:

    ?
    1
    mysqld --skip-grant-tables

    or

    ?
    1
    mysqld-nd --skip-grant-tables

    3.使用root用户[免密码]登陆MySQL

    ?
    1
    mysql -u root -p


    输入密码时,直接回车
    4.选择MySQL系统库

    ?
    1
    use mysql



    5.查看当前系统用户root的密码

    ?
    1
    select user ,host, password from user where user = "root"


    查看的password是经过加密的,若以后想要恢复当前密码可以先运行这条命令备份一下当前的密码
    6.修改root用户的密码

    ?
    1
    update user set password = PASSWORD ( "your_password" ) where user = "root"


    这里是直接修改了root用户在所有登陆位置的密码,若你仅仅只想修改root在某一处的密码,可以在上一条命令中增加一个限定条件host='somewhere'
    比如,下面的命令修改了root用户在本机localhost的登陆密码

    ?
    1
    update user set password = PASSWORD ( "your_password" ) where user = "root" and host= "localhost"


    上面的操作是直接对MySQL系统库mysql进行修改,安全性较低,一旦出现误操作,成本高,难恢复,并且仅限于对mysql库有UPDATE权限的用户,MySQL本身为我们提供了一种更加简便的操作方式,在此作一下简单的介绍
    修改当前登陆用户的密码,使用SELECT CURRENT_USER();可查看当前登陆用户

    ?
    1
    SET PASSWORD = PASSWORD ( 'cleartext password' );

    修改bob用户在%.example.org位置上的登陆密码,注意这里的host地址%.example.org是必须要存在的

    ?
    1
    SET PASSWORD FOR 'bob' @ '%.example.org' = PASSWORD ( 'cleartext password' );


    当然我们也可以通过GRANT的方式修改密码

    ?
    1
    GRANT USAGE ON *.* TO 'bob' @ '%.example.org' IDENTIFIED BY 'cleartext password' ;


    关于修改密码的详细内容还是请见官方文档(5.6)
    http://dev.mysql.com/doc/refman/5.6/en/set-password.html
    7.刷新一下系统的权限

    ?
    1
    flush privileges ;


    8.关闭MySQL的安全模式,重新启动即可

    注:

    在第2步,启动安全模式的时候,命令行可能会一直处于挂起状态,此时Ctrl+c也不能终止运行,这时候只要通过netstat -ao查看MySQL端口是否处于监听状态,如是即代表MySQL已经进入了安全模式,出现这种现象是主要因为MySQL不提倡安全模式长时间运行

     

    ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'

    提示:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'。前两天也出现过这个问题,网上找了一个比较流行的方法(见方法一),搞定了。今天又用这个试了试,却搞不定,在网上找了半天,终于发现是因为mysql数据库的user表里,存在用户名为空的账户即匿名账户,导致登录的时候是虽然用的是root,但实际是匿名登录的,通过错误提示里的''@'localhost'可以看出来,于是解决办法见方法二。

    方法一:
    1.关闭mysql
       # service mysqld stop
    2.屏蔽权限
       # mysqld_safe --skip-grant-table
       屏幕出现: Starting demo from .....
    3.新开起一个终端输入
       # mysql -u root mysql
       mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
       mysql> FLUSH PRIVILEGES;//记得要这句话,否则如果关闭先前的终端,又会出现原来的错误
       mysql> \q

    方法二:
    1.关闭mysql
       # service mysqld stop
    2.屏蔽权限
       # mysqld_safe --skip-grant-table
       屏幕出现: Starting demo from .....
    3.新开起一个终端输入
       # mysql -u root mysql
       mysql> delete from user where USER='';
       mysql> FLUSH PRIVILEGES;//记得要这句话,否则如果关闭先前的终端,又会出现原来的错误
       mysql> \q

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-23 08:34 , Processed in 0.060740 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表