MySQL忘记root密码的两种解决方法,skip-grant-tables和init-file

简介: mysql 8里面加了这个参数会自动加上–skip-networking不允许远程连接,加入的方法可以是在命令行加入

如果忘记了MySQL的root用户密码有两种解决方案。


在启动mysqld的时候加上参数skip-grant-tables

mysql 8里面加了这个参数会自动加上–skip-networking不允许远程连接,加入的方法可以是在命令行加入,类似:mysqld_safe —skip-grant-tables &

或者修改启动的参数文件,如:/etc/my.cnf或者 /etc/mysql/mysql.cnf ,在[mysqld]下面加上skip-grant-tables

root@infokist:/etc/mysql# service mysql restart
root@infokist:/etc/mysql# mysql
mysql> update mysql.user set authentication_string=password('dingjia') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)


但在MySQL 8版本中,这种方式已经不可行,因为其已移除了PASSWORD()函数。可以使用alter user的命令,但注意要载入权限表后才能alter user。


mysql> alter user root identified by 'dingjia';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
Query OK, 0 rows affected (0.07 sec)
mysql> alter user root@localhost identified by 'dingjia';
Query OK, 0 rows affected (0.02 sec)、


密码修改完成后记得把配置文件里面的参数skip-grant-tables去掉,重新启动。


init-file方案

这种方法只会重启一次MySQL实例,而且基本上不存在安全隐患。

先关闭实例,再创建一个sql文件,例如chpw.sql,在文件里面写上密码修改语句。


alter user 'root'@'localhost' identified by 'dingjia';


注意这个文件要mysqld线程能访问,最后,使用–init-file参数启动实例,类似: mysqld_safe --init-file=/tmp/chpw.sql &

如果mysql实例是通过服务脚本来管理的,在配置文件里面加入下面的一行再启动实例。


init-file=/tmp/chpw.sql

实例启动成功后,密码即修改完毕。


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
3419 26
|
Ubuntu 关系型数据库 MySQL
mysql8.0安装初始化不需要设定root密码?
uubntu 的mysql安装完成后无法设定root密码
660 10
|
SQL 关系型数据库 MySQL
【YashanDB 知识库】YashanDB 支持 MySQL 多表更新语句的解决方法
【YashanDB 知识库】YashanDB 支持 MySQL 多表更新语句的解决方法
|
SQL 关系型数据库 MySQL
【YashanDB知识库】YashanDB 支持MySQL多表更新语句的解决方法
本文介绍了在YashanDB中处理MySQL多表更新语句的方法。由于YashanDB默认不支持多表更新(报错YAS-04344),可通过启用兼容性参数`SQL_PLUGIN = 'MYSQL'`解决,或改写SQL语句实现相同功能。文章通过具体示例说明了多种改写方法,包括根据共同列更新单个或多个字段、添加过滤条件以及基于多个共同列的更新场景。涉及的表结构和数据展示了实际操作过程,帮助用户顺利迁移和使用YashanDB。
|
NoSQL 安全 关系型数据库
2024Mysql And Redis基础与进阶操作系列(6)作者——LJS[含MySQL 多表之一对一/多;多对多;多表联合查询等详解步骤及常见报错问题所对应的解决方法]
MySQL 多表之一对一/多;多对多;多表联合之交叉连接;内连接;左、右、外、满、连接;子查询及关键字;自连接查询等详解步骤及常见报错问题所对应的解决方法
|
存储 SQL NoSQL
|
存储 关系型数据库 MySQL
【赵渝强老师】解决MySQL丢失root用户密码
本文介绍了MySQL数据库中用户密码存储的变化,以及如何通过特殊方法重置root用户的密码。从MySQL 5.7版本开始,密码字段由“password”改为“authentication_string”。文章详细列出了重置密码的步骤,并提供了相关代码示例和视频教程。
595 0
|
NoSQL 关系型数据库 MySQL
2024Mysql And Redis基础与进阶操作系列(8)作者——LJS[含MySQL 创建、修改、跟新、重命名、删除视图等具体详步骤;注意点及常见报错问题所对应的解决方法]
MySQL 创建、修改、跟新、重命名、删除视图等具体详步骤;举例说明注意点及常见报错问题所对应的解决方法
|
SQL NoSQL 关系型数据库
|
10月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
598 158

热门文章

最新文章

推荐镜像

更多