MySQL8.0 on Windows下重置root密码的BUG
很多人都知道mysql忘记root密码之后可以通过skip-grant-tables来暂时免密登录mysql,从而修改root密码,但是这种方式一方面有安全隐患,另一方面也并不怎么适用于windows系统,今天在通过此方式修改mysql8.0 on windows的root密码时遇到了这个问题,写个小随笔记一下。
参考:
首先看下修改mysql密码的两种方式:
方法一:
在mysql的启动文件中添加skip-grant-tables参数后重启mysql,然后免密登录mysql后执行:
alter user root@'localhost' identified by 'newpasswd';
然后重启mysql即可。
方法二:
创建一个名为root_newpass.txt的文本文件,放入如下内容:
alter user root@'localhost' identified by 'newpasswd';
然后使用此文件启动一次数据库:
mysqld --defaults-file="c:\\programdata\\mysql\\mysql server 8.0\\my.ini" --init-file=root_newpass.txt
# --defaults-file必须写在--init-file之前
如果是在linux下则无需添加--defaults-file项。
使用方法一无法在mysql8.0 on windows上修改root密码的问题在哪儿?
在官方文档关于--skip-grants-tables的描述中5.7和8.0版本里有一句明显的差异,8.0里多了如下一句:
if the server is started with the --skip-grant-tables option to disable authentication checks,
the server enables --skip-networking automatically to prevent remote connections.
其意思是当你使用--skip-grant-tables跳过授权检测启动mysql时,mysql会自动启用--skip-networking参数,这会阻止远程访问。
如果系统是windows那你需要开启shared-memory/shared-memory-base-name或者enable-named-pipe/socket这两对参数任意一对才能本地连接到mysql进行密码重置(关于这俩名字熟悉sqlserver的应该不陌生),但windows版本的mysql并不会默认设置这些参数,这导致mysql8.0在windows上通过--skip-grant-tables重置密码是一件很麻烦的事,虽然这比5.7更安全。
推荐使用方法二在任意平台上进行root密码的重置。
上一篇: 鼻子有点痒
下一篇: count函数详细介绍
推荐阅读
-
windows 下忘记mysql root密码的更改方法
-
windows 下忘记mysql root密码的更改方法
-
windows下mysql忘记root密码的解决方法
-
windows下mysql忘记root密码的解决方法
-
在Linux下修改和重置root密码的方法(超简单)
-
Windows 8.1下MySQL5.7 忘记root 密码的解决方法
-
MySQL8.0 on Windows下重置root密码的BUG
-
windows下忘记mysql的root用户密码,重置
-
忘记win密码 但仍有PIN 指纹 FaceID 图片密码下 [无损] 重置windows 本地用户 密码的一种方法
-
windows下重置mysql的root密码方法介绍