当前位置:   article > 正文

【跳过mysql密码校验】_mysql 跳过密码验证

mysql 跳过密码验证

跳过mysql密码校验

跳过mysql校验方式有两种:

1. 修改 my.ini 配置文件:

在mysqld下添加如下语句,并重启mysql
skip-grant-tables;
注意:此方式在 mysql8.X 版本以及更高版本不再适用。情况(问题)是重启时无法启动。不推荐

2. 通过以下管理员窗口命令启动mysql服务:

mysqld --console --skip-grant-tables --shared-memory
正常启动实例如下:

2023-11-04T02:16:05.457267Z 0 [System] [MY-010116] [Server] D:\1 Program software\mysql\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.34) starting as process 19332
2023-11-04T02:16:05.465009Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2023-11-04T02:16:05.689071Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2023-11-04T02:16:05.817080Z 0 [Warning] [MY-011311] [Server] Plugin mysqlx reported: 'All I/O interfaces are disabled, X Protocol won't be accessible'
2023-11-04T02:16:05.886202Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2023-11-04T02:16:05.886295Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2023-11-04T02:16:06.914627Z 0 [System] [MY-010931] [Server] D:\1 Program software\mysql\MySQL Server 8.0\bin\mysqld.exe: ready for connections. Version: '8.0.34'  socket: ''  port: 0  MySQL Community Server - GPL.
|
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

注意:以上为正常启动示例,光标会一直闪烁表示已经无密码验证启动。
使用命令启动前必须先关闭mysql服务,否则报以下错误:

2023-11-04T02:01:40.522003Z 0 [System] [MY-010116] [Server] D:\1 Program software\mysql\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.34) starting as process 13980
2023-11-04T02:01:40.529938Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2023-11-04T02:01:40.530554Z 1 [ERROR] [MY-012271] [InnoDB] The innodb_system data file 'ibdata1' must be writable
2023-11-04T02:01:40.530599Z 1 [ERROR] [MY-012278] [InnoDB] The innodb_system data file 'ibdata1' must be writable
2023-11-04T02:01:40.530631Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
2023-11-04T02:01:40.530852Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2023-11-04T02:01:40.530890Z 0 [ERROR] [MY-010119] [Server] Aborting
2023-11-04T02:01:40.531154Z 0 [System] [MY-010910] [Server] D:\1 Program software\mysql\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld 8.0.34)  MySQL Community Server - GPL.

C:\Users\li>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

还有一种情况,如果安装时mysql安装位置和放置data的位置不同,或者使用默认(默认data位置:C:\ProgramData\MySQL\MySQL Server 8.0\Data)。
此时使用以下命令跳过验证:
mysqld --defaults-file=“C:\ProgramData\MySQL\MySQL Server 8.0\my.ini” --console --skip-grant-tables --shared-memory
避免出现找不到data文件错误
参考链接:采用其指定my.ini文件跳转命令

如果不想使用默认安装位置,导致此问题,可以参考以下安装链接:
最新MySQL安装(重装)、卸载、配置全教程

最后另外打开一个拥有管理员权限的命令窗口,输入 mysql 回车即可免密码进入。(前提:必须把mysql的bin路径添加到系统环境变量path下)

3. 修改密码

如果密码获取其他原因需要修改密码,以上跳过验证是必要操作。

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

不用惊慌,刷新一下权限继续即可。
flush privileges;

至此修改密码完成。

此外修改密码方式多种多样,推荐如下参考链接:
MySQL8.0!!!登录失败|ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password:YES

4.修改密码问题

我先使用source命令把一个sql文件运行了。
我的密码突然被篡改是因为我在mysql正常的时候,反复尝试mysqldump -uroot -p --all-databases > all.sql进行数据导出,因为导出内容一直是

Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help
  • 1
  • 2
  • 3
  • 4

虽然没有报错,但是这也不对,一直没有办法解决,所以我反复尝试,
最后成功让mysql自己修改了密码,不让我再操作 … …

本来数据导不出来就一肚子火,这一下直接骂了娘,我很抱歉@``@

然后我开始修改密码:

我使用了 3 的命令修改密码,出现了以下错误:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '123456';                                  
ERROR 1726 (HY000): Storage engine 'MyISAM' does not support system tables. [mysql.user]
  • 1
  • 2

首先我通过百度大法是这样修改的alter table mysql.user ENGINE=InnoDB;就把这个表的存储引擎设置成innoDB,虽然默认就是innoDB。用了这个user表不报错了,但是 db 表也开始报一摸一样的错误。db表改了又出来表错误的提示。这样算是不行了。
然后我找到了另一个参考:如何修复错误1726 (HY000):存储引擎’MyISAM‘不支持系统表。在MySQL8.0中创建用户后

里面有一段如下:

不要运行alter来强制它将mysql.db更改为innodb。您将得到一个不同的错误,例如“无法从mysql.db加载。该表可能已损坏”。如果你这样做了,下面也会解决这个问题。

我从5.7恢复了一个转储到一个新的8.0服务器,然后出现了这个问题。

要修复它,请停止mysql服务,然后运行以下命令,使mysql 8升级内部模式:

mysqld --upgrade=FORCE

您可以查看日志以查看其进度,以及是否有任何错误。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

升级???!!!!!!
哦谢特!!!
我想起来刚开始导入的sql文件是从mysql57导出来的,用source导入的是所有表包括系统表!而我的mysql是8+版本。可能在这个过程中使系统文件版本倒退了。
然后我运行mysqld --upgrade=FORCE 升级之后果然不再出现以上提示。nice

另外,当我修改使用 3 命令修改密码失败时,我还尝试了直接使用update直接修改密码。
第一步-密码置空
update user set authentication_string='' where user='root';
第二步-无密码进入
推出跳过校验登录窗口,正常登录,输入密码的时候直接回车。因为我们的密码就是空的。
在没有升级之前,我尝试 alter… 命令后还是报错。我侥幸的想使用密码置空的命令来修改密码:update user set authentication_string='123456' where user='root';
这样是错误的,它直接把需要加密的密码字段设置成了123456,使用123456登录不上.
第三步
必须修改版本问题,再使用alter修改密码。

番外

有此篇文章的问题时,我是为了解决密码被突然篡改的问题。
会涉及到密码失效、密码过期策略和密码格式设置等问题。所以放几个参考链接供大家参考:
用户密码过期那些事。-知乎
密码复杂度设置

其实我还有一个大问题没有解决:为什么mysql密码会失效呢,经常失效还怎么玩。我出现了昨天安装今天密码失效的情况,确定密码是对的,就是失效了;还出现过线上问题,mysql密码直接被篡改并且数据库丢失,还好是个小东西再装一遍也没大问题,但是再出现这种问题没法和老板交代了,只能提桶跑路了呜呜呜。如果有大佬可以指点一二的话,必当顶礼膜拜。欢迎留言

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/816464
推荐阅读
相关标签
  

闽ICP备14008679号