zoukankan      html  css  js  c++  java
  • 如何重设 MySQL 的 root 密码

    MySQL下创建新用户、新数据库、设定访问权限控制都需要用到root密码。万一把root密码忘了,该怎么办?

    幸运地是,重设密码很容易。

    安全模式重置法

    基本的思路是,以安全模式启动mysql,这样不需要密码可以直接以root身份登录,然后重设密码。

    首先,我们停掉MySQL服务:

    sudo service mysql stop  
    
    #mac停止的方法
    mysql.server stop
    mysql.server start
    mysql.server restart

     修改用户密码 强力推荐

    mysql> alter user 'root'@'localhost' identified by 'youpassword';   

    以上命令适用于Ubuntu和Debian。CentOS、Fedora和RHEL下使用mysqld替换mysql。(标红适合mac)

    以安全模式启动MySQL:

    sudo mysqld_safe --skip-grant-tables --skip-networking &  

    注意我们加了--skip-networking,避免远程无密码登录 MySQL。 (如果提示需要开启mysql则开启即可在mac上测试需要开启

    这样我们就可以直接用root登录,无需密码:

    mysql -u root  

    接着重设密码:

    mysql> use mysql;  
    mysql> update user set password=PASSWORD("mynewpassword") where User='root';  
    mysql> flush privileges;  

    如果提示以下错误

    MySQL5.7更改密码时出现ERROR 1054 (42S22): Unknown column 'password' in 'field list' 

    新安装的MySQL5.7,登录时提示密码错误,安装的时候并没有更改密码,后来通过免密码登录的方式更改密码,
    输入update mysql.user  set password=password('root') where user='root'时提示ERROR 1054 (42S22): Unknown column 'password' in 'field list',
    原来是mysql数据库下已经没有password这个字段了,password字段改成了
    authentication_string
     
    所以更改语句替换为
    update mysql.user set authentication_string=password('root') where user='root' ;即可

    重设完毕后,我们退出,然后启动 MySQL 服务:

    mysql > quit  

    quit不需要分号。

    重启服务:

    sudo service mysql restart  
    
    mac的重启方法
    mysql.service restart
    同样,以上命令适用于Ubuntu和Debian,Centos、Fedora和RHEL需要用mysqld替换mysql。
    
    现在可以尝试用新密码登录了:
    mysql -u root -p mynewpassword  

    其他方案

    以上是通用方案,在Ubuntu和Debian系统上,有一个debian-sys-maint用户,Debian类系统下一些系统脚本对mysql的操作是通过这个用户完成的。所以我们可以通过这个用户来修改 root 密码。该用户的密码可以在/etc/mysql/debian.cnf下找到:

    # Automatically generated for Debian scripts. DO NOT TOUCH!
    [client]
    host     = localhost  
    user     = debian-sys-maint  
    password = PASSWORD  
    socket   = /var/run/mysqld/mysqld.sock  
    [mysql_upgrade]
    host     = localhost  
    user     = debian-sys-maint  
    password = PASSWORD  
    socket   = /var/run/mysqld/mysqld.sock  
    basedir  = /usr  

    用该用户登录 MySQL 后,也可以修改密码(具体修改过程见上):

    sudo mysql -u debian-sys-maint -p  
  • 相关阅读:
    第十四周课程总结&实验报告(简单记事本的实现)
    第十三周课程总结
    第十二周课程总结
    第十一周课程总结
    第十周课程总结
    第九周课程总结&实验报告(七)
    第八周课程总结&实验报告(六)
    第七周课程总结&实验报告(五)
    第五周课程总结&实验报告(四)
    2019JAVA课程总结
  • 原文地址:https://www.cnblogs.com/zhaoyingjie/p/8252842.html
Copyright © 2011-2022 走看看