centos7 + mysql 8 忘记密码

本文总结了在centos7环境下,mysql 8忘记密码后的操作。包括配置免密登陆,通过修改配置文件并重启mysql实现;重置密码,免密登陆后将密码置空;修改密码,关闭免密登陆,重启mysql后登陆修改为新密码。

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

数据库的密码要求需要大小写、字母、字符就皆有,这种不常用密码组合就很容易忘记。

忘记密码之后去互联网上搜索解决方案,会发现mysql不同版本之间的区别让人很难受,大多教程实践起来也是失败,在此总结一下mysql 8 的忘记密码操作

操作环境:centos7 + mysql 8

其它环境操作大同小异

1. 配置免密登陆

  • 修改配置文件:
    vim /etc/my.cnf
    
    并在文件最后加上
    skip-grant-tables
    
  • 重启mysql:
    service mysqld restart
    

2. 重置密码

  • 直接免密登陆:

    mysql -u root -p
    

    直接回车登陆

  • 置空密码:
    进入mysql之后,使用如下查看用户数据:

    select host, user, authentication_string, plugin from user;
    

    如果user对应的authentication_string不为空,按下面操作置空(示例代码为对root用户操作)

    use mysql;
    update user set authentication_string='' where user='root';
    

    最后退出mysql环境回到shell:

    exit
    

3. 修改密码

  • 关闭免密登陆(第一步的反向操作):

    vim /etc/my.cnf
    

    去掉最后面的

    skip-grant-tables
    

    重启mysql:

    service mysqld restart
    
  • 用户登陆并修改密码:

    mysql -u root -p
    

    密码直接回车就行(因为第二步我们置空了用户的密码),然后修改用户的密码为你想要的

    ALTER user 'root'@'localhost' IDENTIFIED BY 'Pwd1234#';
    
### 如何在 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),因为后者可能会阻止某些操作正常工作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值