centos7下Mysql数据库密码忘记如何破解!

当在CentOS7环境中遇到Mysql数据库密码遗忘的问题,可以通过修改配置文件,添加skip-grant-tables选项实现免密登录,然后进入数据库修改root密码,并创建新用户允许外网访问。最后刷新权限,删除临时添加的配置,重启mysql服务,问题即可得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.修改配置文件:

vi /etc/my.cnf 

在【: mysqld】下添加 skip-grant-tables 保存退出
在这里插入图片描述2.重启mysql

systemctl  restart  mariadb.service

3.免密登录

mysql -u root

4.进入数据库

use mysql

5.修改root密码

update  user  set  password=password('新密码')where    user='root';

6.添加新用户,可以%外网访问
#新增用户

GRANT  ALL  PRIVILEGES  ON  *.*  TO  '用户名'@'%' IDENTIFIED BY  '新密码'  WITH  GRANT  OPTION;

7.刷新权限

flush  privileges;

8.退出mysql数据库
quit或exit
9.删除/etc/my.cof 下刚刚添加的一条数据
skip-grant-tables
10.重启mysql服务

systemctl  restart  mariadb.service

搞定!

### 如何在 CentOS 7 中重置 MySQL Root 密码 #### 停止 MySQL 服务 为了安全地重置密码,需先停止正在运行的 MySQL 或 MariaDB 服务。这可以通过 `systemctl` 工具来完成。 ```bash sudo systemctl stop mysqld.service ``` #### 启动 MySQL 跳过权限表 接着以跳过授权表的方式启动 MySQL 数据库服务器,这样可以绕过正常的认证过程: ```bash sudo mysqld_safe --skip-grant-tables & ``` 此命令会在后台启动 MySQL 实例并忽略访问控制设置[^1]。 #### 登录到 MySQL 控制台 此时可以直接连接至 MySQL 不需要提供任何凭证信息: ```bash mysql -u root ``` 一旦进入 MySQL 提示符下,则可继续下一步操作[^2]。 #### 修改 Root 用户密码 对于不同版本的 MySQL 可能存在差异化的指令集用于更新管理员账户的信息。针对较新的发行版如 MySQL 8.0 推荐采用如下 SQL 语句: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPasswordHere!'; FLUSH PRIVILEGES; ``` 上述代码片段将把本地主机上的 root 用户的新密码设为 "NewPasswordHere!" 并刷新权限缓存以便立即生效[^3]。 另一种方法涉及创建一个包含必要变更脚本的小型 .sql 文件,并通过特定参数让 MySQL 在重启时自动执行它。例如,在 `/tmp/` 下建立名为 `mysql_root_password.sql` 的文件,其内容应为: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'AnotherSecurePasswd!'; ``` 随后利用下面这条 shell 命令行组合实现无交互式的密码更改流程: ```bash cat >/tmp/mysql_root_password.sql <<EOL ALTER USER 'root'@'localhost' IDENTIFIED BY 'AnotherSecurePasswd!'; EOL sudo mysqld --user=mysql --init-file=/tmp/mysql_root_password.sql & rm /tmp/mysql_root_password.sql ``` 这种方法同样能够达到目的而且更加自动化一些[^4]。 #### 验证新密码有效性 最后一步是要确认刚刚所做的改动确实有效。为此只需再次尝试用新设定好的凭据去登陆即可: ```bash mysql -uroot -p ``` 当被提示输入密码的时候就键入刚才所定义的那个字符串看看能否顺利进入到数据库管理界面内。 #### 正常方式重新启动 MySQL 服务 完成了以上所有步骤之后记得要按照常规模式开启 MySQL 服务而不是之前那种特殊状态下的做法: ```bash sudo systemctl start mysqld.service ``` 并且建议检查一下 SELinux 是否处于宽容(permissive)而非强制(enforcing),因为后者可能会阻止某些操作正常工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值