mysql8.0.X忘记root密码,跳过授权表更改密码报:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannotexe

我的一台mysql8.0.44 数据,忘记了root密码,我想通过使用使用授权表方式启动mysql,然后无密码进去修改数据库密码: ./mysqld_safe --defaults-file=/data/mysql8/etc/my.cnf --skip-grant-ta...

我的一台mysql8.0.44 数据,忘记了root密码,我想通过使用使用授权表方式启动mysql,然后无密码进去修改数据库密码:

./mysqld_safe --defaults-file=/data/mysql8/etc/my.cnf --skip-grant-tables

其中 --defaults-file=/data/mysql8/etc/my.cnf    为配置文件路径,这里为非标准路径


本地登录Mysql后执行下面语句报错

ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123456’;


ERROR 1290 HY000: The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement


报错分析

The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

意思貌似MYSQL还运行在 --skip-grant-tables模式,–skip-grant-tables模式可以重置root的密码,但是用–skip-grant-tables启动后修改密码又报错,如何让他回到原来的模式

解决方法

执行命令关闭数据库只读属性


mysql> set global read_only=0; 

Query OK, 0 rows affected (0.00 sec) 

mysql> flush privileges;

Query OK, 0 rows affected (0.05 sec)

mysql> show variables like '%read_only%'; 

+------------------+-------+ 

| Variable_name  | Value | 

+------------------+-------+ 

| innodb_read_only | OFF  | 

| read_only    | OFF  | 

| tx_read_only   | OFF  | 

+------------------+-------+ 

3 rows in set (0.00 sec) 


再次修改密码

这次就不报错了


mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

Query OK, 0 rows affected (0.04 sec)


密码修改成功,退出skip-grant-tables模式

kill 掉 mysqld_safe --skip-grant-tables 的进程就可以了


leenhem@DESKTOP-7SREO20:~$ sudo  /etc/init.d/mysql start

 * Starting MySQL database server mysqld

No directory, logging in with HOME=/[ OK ]


  • 发表于 2024-11-27 12:53
  • 阅读 ( 29 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
shitian
shitian

662 篇文章

作家榜 »

  1. shitian 662 文章
  2. 石天 437 文章
  3. 每天惠23 33 文章
  4. 小A 29 文章