0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MySQL忘记root密码解决方案

马哥Linux运维 来源:cnblogs 2024-04-23 16:08 次阅读

场景一:重置root密码

mysql登录密码为password()算法加密,解密成本太高,以下为通用方案;

原理:mysql提供了特殊启动方式,即跳过权限表验证,启动后,登录不需要提供密码;

登录后,即可修改mysql数据库的user表,重置密码,然后刷新权限,重启mysql服务即可;

注意:此时mysql服务将面临高风险,请在合适时间执行;

#停止正在运行的mysql服务

service mysqld stop

#以--skip-grant-tables选项启动服务,跳过权限表验证,有2种方式

方式1:指定运行选项,只在本次启动生效

./bin/mysqld_safe --skip-grant-tables --user=root &
如果本机没有mysqld_safe服务,运行mysqld效果相同

方式2:修改配置文件,使用service、systemctl启动均生效

修改配置文件my.cnf,添加 skip-grant-tables
my.cnf可能存在多个,请使用  sudo mysql --help | grep my.cnf   或   mysql --help | grep 'Default options' -A 1 确认加载顺序

#root账号登录mysql,此时不需要提供密码
mysql -uroot


#切换到mysql数据库,登录账号与权限在此数据库中
use mysql;


#查看mysql版本
select version();


#查看当前账户信息,根据mysql版本执行
#5.7+版本密码为authentication_string(生效),password;
#5.7-版本密码为password 
#user=用户名,host=登录IP,即允许该账户登录的IP地址,每个IP一条user表记录,%表示任意IP
select user,host,authentication_string,password from user where user='root';


#5.7+设置密码
update user set authentication_string=password('password') where user='root';
--and Host='localhost';


#5.7-设置密码
update mysql.user set password=password('password') where user='root';
--host='localhost';


#5.7+支持2个密码字段,直接设置2个,生效为authentication_string
update user set authentication_string=password('password'),password=password('password') where user='root' ;
--and Host='localhost';


#刷新权限表
flush privileges;


#退出mysql连接
quit;


#重启mysql服务
service mysqld restart

场景二:增加账号与授权

以上--skip-grant-tables模式不验证权限,同时无法增加账号授权,所以增加账号的登录IP,需要以正常模式启动登录


#密码登录重启后的mysql服务
mysql -u root -p
 
#切换mysql数据库,账号和权限在此数据库
use mysql;
 
#增加账号授权
grant all privileges on *.* to "root"@"ip" identified by "password" with grant option;
 
#刷新权限表
flush privileges;
 
#退出mysql连接
quit;
 
#无需重启服务

场景三:修改登录密码

1> 更新mysql.user表,需要登录MySQL执行,需要刷新权限列表生

mysql> use mysql; #5.7前后版本密码字段不一致,且 user 表同时存在2个字段
# mysql5.7之前
mysql> update user set password=password('123456') where user='root' and host='localhost';
# mysql5.7之后
mysql> update user set authentication_string=password('123456') where user='root' and host='localhost';
mysql> flush privileges; #刷新权限列表

2> 用set password命令,需要登录MySQL执行,自动刷新权限列表

语法:set password for '用户名'@'域'=password(‘密码’)
mysql> set password for 'root'@'localhost'=password('123456');

3> alter user命令,需要登录MySQL执行,自动刷新权限列表

语法:ALTER USER '用户名'@'域' IDENTIFIED BY 'xxxx'; 
#初始化时root账号只有localhost
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

4> grant命令,需要登录MySQL执行,自动刷新权限列表

语法:GRANT 权限列表(逗号分隔) ON 数据库.数据表 TO '用户'@'域' IDENTIFIED BY '密码';
#grant语句自动创建用户以及设置密码
#权限支持 create、update、select、lete、drop、execute等,也可以指定 all privileges 授权所有权限
#grant语句最后可以指定 WITH GRANT OPTION 指定用户可以将权限传递授权给其他用户。
#数据库与数据表支持 * 指定全部,如 testdb.* 或 *.*,其他情况只能一条授权一个数据表
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.11.31' IDENTIFIED BY 'Mysql.pass.123' WITH GRANT OPTION;

5> mysqladmin,无需登录MySQL执行,自动刷新权限列表

语法:mysqladmin -u用户名 -p旧的密码 password 新密码
#该方式为明文传输密码,不安全
[root@localhost ~]# mysqladmin -uroot -p123456 password 1234abcd
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
New password: 
Confirm new password: 
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • MySQL
    +关注

    关注

    1

    文章

    801

    浏览量

    26433
  • root
    +关注

    关注

    1

    文章

    85

    浏览量

    21373

原文标题:MySQL忘记root密码解决方案

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何在Linux中重置忘记root密码

    忘记了 Linux root 密码?不用担心!本文提供了简单易懂的说明,可以安全地重置和修改 root 密码
    的头像 发表于 12-04 14:51 2513次阅读
    如何在Linux中重置<b class='flag-5'>忘记</b>的<b class='flag-5'>root</b><b class='flag-5'>密码</b>

    MySQL root密码忘记怎么办?

    -S /data/3306/mysql.sock 登录数据库2. 更改密码mysql> update mysql.user set password=password('123456
    发表于 06-22 17:54

    分享linuxwindows mysql忘记root密码的解决方法

    图文详解linuxwindows mysql忘记root密码解决方案
    发表于 03-06 12:59

    Mysql数据库忘记密码怎么办如何修改密码

    Mysql数据库忘记密码,修改密码的方法,超详细
    发表于 06-10 12:00

    不知道root密码怎么修改

    今天一朋友问不知道root 密码怎么修改。他这个系统是海思平台的嵌入式Linux系统。然后尝试了修改并进入系统。嵌入式Linux中的root 密码
    发表于 11-05 08:33

    windowsxp忘记密码

    windowsxp忘记密码 计算机安装的是Windows XP操作系统,不慎忘记了系统登录用户“zhangbq”的密码,而且在安装时也没有做相应的应急盘,现把两种方法介绍
    发表于 01-08 09:55 8727次阅读

    Centos-root密码忘记解决办法

    linux系统丢失root密码,进入启动界面即可轻松解决。
    发表于 10-29 11:44 0次下载

    忘记了Linux系统的root密码,该怎么办?

    很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?
    的头像 发表于 10-15 16:49 1.2w次阅读

    工控机忘记密码的解决方法

    本期上海研强给大家分享的是工控机忘记密码解决方案,希望看完本篇文章您能对工控机有一个全新的认识!
    发表于 08-11 16:41 6414次阅读

    不知道嵌入式Linux系统下的root密码,修改新密码并进入系统

    今天一朋友问不知道root 密码怎么修改。他这个系统是海思平台的嵌入式Linux系统。然后尝试了修改并进入系统。嵌入式Linux中的root 密码
    发表于 11-01 17:59 14次下载
    不知道嵌入式Linux系统下的<b class='flag-5'>root</b><b class='flag-5'>密码</b>,修改新<b class='flag-5'>密码</b>并进入系统

    忘记Mysql用户密码怎么办

    如果能登录,直接就可以修改密码,但是当我们忘记mysql数据库密码时我们就无法正常进入数据库,也就无法修改密码,那么这时该怎么修改
    的头像 发表于 02-27 14:42 1648次阅读
    <b class='flag-5'>忘记</b><b class='flag-5'>Mysql</b>用户<b class='flag-5'>密码</b>怎么办

    MySQL忘记root密码解决方案

    密码,可能会导致无法正常管理MySQL数据库。 这篇文章将提供详尽、详实、细致的解决方案,帮助解决MySQL忘记
    的头像 发表于 11-21 11:04 619次阅读

    mysql密码忘了怎么重置

    mysql密码忘了怎么重置  MySQL是一种开源的关系型数据库管理系统,密码用于保护数据库的安全性和保密性。如果你忘记
    的头像 发表于 12-27 16:51 6299次阅读

    MySQL密码忘记了怎么办?MySQL密码快速重置方法步骤命令示例!

    MySQL密码忘记了怎么办?MySQL密码快速重置方法步骤命令示例! MySQL是一种常用的关系
    的头像 发表于 01-12 16:06 719次阅读

    Jtti:MySQL初始化操作如何设置root密码

    MySQL初始化时,可以通过以下步骤设置root密码: 打开命令行工具,使用以下命令启动MySQL服务:   sudo service mysql
    的头像 发表于 08-08 16:45 309次阅读