赞
踩
跳过mysql校验方式有两种:
在mysqld下添加如下语句,并重启mysql。
skip-grant-tables;
注意:
此方式在 mysql8.X 版本以及更高版本不再适用。情况(问题)是重启时无法启动。不推荐
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.
|
注意:
以上为正常启动示例,光标会一直闪烁表示已经无密码验证启动。
使用命令启动前必须先关闭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>
还有一种情况,如果安装时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下)
如果密码获取其他原因需要修改密码,以上跳过验证是必要操作。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'
mysql_native_password
替换成caching_sha2_password
。ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '123456';
The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
不用惊慌,刷新一下权限继续即可。
flush privileges;
至此修改密码完成。
此外修改密码方式多种多样,推荐如下参考链接:
MySQL8.0!!!登录失败|ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password:YES
我先使用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
虽然没有报错,但是这也不对,一直没有办法解决,所以我反复尝试,
最后成功让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]
首先我通过百度大法是这样修改的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
您可以查看日志以查看其进度,以及是否有任何错误。
升级???!!!!!!
哦谢特!!!
我想起来刚开始导入的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密码直接被篡改并且数据库丢失,还好是个小东西再装一遍也没大问题,但是再出现这种问题没法和老板交代了,只能提桶跑路了呜呜呜。如果有大佬可以指点一二的话,必当顶礼膜拜。欢迎留言
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。