在Linux环境下mysql的root密码忘记几种解决方法

MySQL密码的恢复方法之一

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

# vi /etc/my.cnf

在[mysqld]的段中加上一句:skip-grant-tables 保存并且退出vi。
3.重新启动mysqld?

# /etc/init.d/mysqld restart ( service 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的登录设置修改回来?

vi /etc/my.cnf

将刚才在[mysqld]的段中加上的skip-grant-tables删除
保存并且退出vi。
6.重新启动mysqld?

# /etc/init.d/mysqld restart  ( service mysqld restart )

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

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

  1. KILL掉系统里的MySQL进程;
    ?
killall -TERM mysqld
  1. 用以下命令启动MySQL,以不检查权限的方式启动;
    ?
safe_mysqld --skip-grant-tables &
  1. 然后用空密码方式使用root用户登录 MySQL;
    ?
mysql -u root
  1. 修改root用户的密码;?
mysql> update mysql.user set password=PASSWORD('新密码') where User='root'; 
mysql> flush privileges; 
mysql> quit

重新启动MySQL,就可以使用新密码登录了
MySQL密码的恢复方法三
有可能你的系统没有 safe_mysqld 程序(比如我现在用的 ubuntu操作系统, apt-get安装的mysql) , 下面方法可以恢复

  1. 停止mysqld;
    ?
/etc/init.d/mysql stop

(您可能有其它的方法,总之停止mysqld的运行就可以了)
2. 用以下命令启动MySQL,以不检查权限的方式启动;?

mysqld --skip-grant-tables &
  1. 然后用空密码方式使用root用户登录 MySQL;?
mysql -u root
  1. 修改root用户的密码;?
mysql> update mysql.user set password=PASSWORD('newpassword') where User='root'; 
mysql> flush privileges; 
mysql> quit

重新启动MySQL?

/etc/init.d/mysql restart

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

如果觉得对您有帮助的话不妨点击关注加收藏吧,每天分享一篇实用教程

<think>我们正在回答用户关于Linux忘记root密码如何修改的问题。根据用户提供的引用资料,我们已经整理了几种方法。现在需要按照用户的最新要求,结构化回答,并生成相关问题。 用户要求: 1. 回答中引用的段落末尾自然地添加引用标识 2. 生成相关问题 3. 回答结构清晰,逐步解决问题 我们之前已经整理了几种方法,现在需要重新组织,确保引用标识正确,并且生成相关问题。 根据引用资料,方法总结: 方法1:进入急救模式重置密码(引用[1][3]) 方法2:通过重启系统在开机时重新设置密码(引用[2]) 方法3:通过修改内核参数设置密码(引用[5]) 方法4:修改MySQLroot密码(引用[4]) 注意:这个方法实际上修改的是MySQLroot密码,而不是系统root密码,但用户的问题中提到了,所以我们也要包含,但要说明这是针对MySQL的。 注意:用户的问题主要是系统root密码,但引用[4]是关于MySQL的,所以我们在回答时分开说明。 另外,用户要求生成相关问题,我们在最后生成。 回答结构: 1. 引言:说明有多种方法,根据情况选择。 2. 方法一:急救模式(详细步骤,引用[1][3]) 3. 方法二:开机时修改启动参数进入bash终端(详细步骤,引用[2]) 4. 方法三:修改内核参数(详细步骤,引用[5]) 5. 方法四:修改MySQL root密码(注意区分,这是针对MySQL的,引用[4]) 6. 注意事项(如SELinux的问题) 7. 生成相关问题 注意:在步骤中,如果有直接引用原文的地方,在末尾加上引用标识,如[^1]。 </think>在Linux系统中忘记root密码时,可通过以下方法修改。以下操作均需物理或虚拟控制台访问权限,操作前请备份重要数据: ### 🔧 方法一:急救模式重置密码(推荐通用方法) 1. **重启系统**:在GRUB引导界面选择系统内核,按 `e` 进入编辑模式 2. **修改启动参数**:找到 `linux` 开头的行,在行尾追加 `rw init=/bin/bash`(若使用SELinux需加 `enforcing=0`)[^1][^3] 3. **进入单用户模式**:按 `Ctrl+X` 启动,进入bash终端 4. **挂载根分区**(若只读): ```bash mount -o remount,rw / ``` 5. **修改密码**: ```bash passwd root # 输入两次新密码 touch /.autorelabel # 仅SELinux开启时需要 ``` 6. **重启**:`exec /sbin/init` 或 `reboot -f`[^3] ### ⚡ 方法二:修改内核参数(适用于物理机) 1. GRUB界面按 `e` 编辑内核参数 2. 在 `linux` 行末尾添加 `rd.break` 3. 按 `Ctrl+X` 启动进入紧急模式 4. 依次执行: ```bash mount -o remount,rw /sysroot chroot /sysroot passwd root exit reboot ``` 此方法无需完整启动系统[^5] ### 🔐 方法三:MySQL密码重置(非系统密码) > *仅适用于忘记MySQL root密码* ```bash # 1. 停止MySQL并跳过权限验证 systemctl stop mysqld mysqld_safe --skip-grant-tables & # 2. 登录并更新密码 mysql -u root UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root'; FLUSH PRIVILEGES; exit # 3. 重启服务 killall mysqld_safe systemctl start mysqld ``` 此操作会使MySQL暂时暴露安全风险[^4] --- ### ⚠️ 注意事项 1. **文件系统检测**:若启动显示 `ro`(只读),必须先执行 `mount -o remount,rw /` 2. **SELinux处理**:开启SELinux的系统需执行 `touch /.autorelabel` 重建安全上下文 3. **虚拟机差异**:VMware需在开机时快速按 `e`,物理机通常需按 `Shift` 呼出GRUB 4. **密码强度**:新密码需符合系统策略(通常8位含大小写数字) --- ### 🔍 相关问题 1. 如何在启用了全盘加密(LUKS)的Linux系统重置root密码? 2. 使用UEFI安全启动模式时,上述方法是否仍然有效? 3. 重置密码后出现"SELinux relabeling failed"错误如何解决? 4. 对于无GRUB引导的嵌入式Linux设备(如OpenWRT),密码重置方法有何不同? > 提示:操作成功率取决于系统配置,云服务器可能需通过VNC或救援模式实现。若为生产环境,建议优先联系系统管理员[^1][^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值