引言
在准备做Windows程序设计的大作业时,需要用到 Mysql。打开了 Mysql WorkBench 连接本地数据库时,提示要输入 root 密码,试了几个常用密码无果后,发现自己再次忘记了 Mysql 的 root 密码。但是没有关系,本人已经习惯忘记各种不太常用的账号密码了,驾轻就熟地打开百度搜索相关方法,却发现来来去去都是那同一个方法,而且还因为版本问题与实际情况有些差异,最终还是花费了不少的时间,有点难受,遂写一文记录一下。
方法
思路
纵观百度各种方法,思路均是大致一样:运用mysql的-skip-grant-tables
参数,可以使进入 mysql 时免去密码验证,进入 mysql 后修改mysql.user
用户表中 root 用户的密码,以达到解决忘记密码的问题。
具体步骤
以管理员身份打开 cmd,关闭 mysql
1
net stop mysql
输入
mysqld -nt -skip-grant-tables
回车后界面卡住
以管理员身份打开另一个cmd,输入
mysql -u root -p
回车后进入mysql
接下来在mysql中修改root用户的密码,相应的用户信息也是按数据表的形式存储在
mysql.user
中,我们就可以改数据库数据的方式来修改密码,但这里有一点问题,mysql 的几个版本的用户表的列名都不一样,需要区别对待mysql 5.6
1 2
update mysql.user set password=password('newpassword') where user = 'root'; flush privileges;
mysql 5.7:password列消失,取而代之的是authentication_string
1 2
update mysql.user set authentication_string=password('newpassword') where user = 'root'; flush privileges;
mysql 8:password函数被移除,需要改变方式
1 2
flush privileges; alter user 'root'@'localhost' identified by 'newpassword';
该方法是同时适用与mysql5.7和8,可谓是一种更为优雅的方法
重新启动mysql,正常使用
1 2
net start mysql mysql -u root -p
后续
修改root密码方法的教程网上有很多,但是我经过一通操作后,还是无法进入mysql。在进行上文的方法操作时,在通过 -skip-grant-tables
时我便出现了错误,提示mysql根目录中data目录不存在,搜索网上的教程,建议是自己新建一个data文件夹,新建后便可正常免密码验证进入mysql。但按照后续的步骤操作后,还是无法正常修改root密码,进入 mysql。仔细思考,为什么我这里没有data目录,不仅如此,我这里还没有在众多教程中提到的my.ini配置文件,突然想起,自还原电脑后,我好像还没在本系统使用过mysql,我的mysql还没有初始化,其实并不算是忘记root密码的问题(可能是我太经常忘记了,已经习以为常)。但因为我强行新建了 data 目录,进入 mysql,已经打乱了项目的结构,无法还原。反正里面没什么数据,就打算干脆删了重新装一个 mysql。
卸载
mysql的卸载比较简单,当时我是用 Mysql Installer 安装的,直接进入 Mysql Installer 进行卸载即可。如果不是的话,就比较麻烦了,到控制面板把 Mysql Server 卸载了,再把 mysql 项目所在文件夹删除,然后再到注册表删除相关项,详情可参照这里
安装
两种方法
一是使用 Mysql Installer。使用该在线安装软件非常方便,还可选择安装配套的 mysql 相关软件,安装完后可直接进入傻瓜式配置,无需进行额外的配置,且后续的卸载也可以在这上面进行,个人比较推荐。但该软件只能运行在 Windows 上,且只能安装最新版本的 mysql8。尝试了一下,在初始化数据库时出现问题,而搜索该问题发现关于新版本 mysql 的相关信息非常少,遂放弃新版本,放弃该方式。
二是使用压缩包安装。选择相应的版本下载压缩包解压即可。这种方式则需要手动额外配置。主要步骤有
创建配置文件 my.ini,下面的 basedir 和 datadir 替换为本机 mysql 目录,若有则不用创建
1 2 3 4 5 6 7 8 9 10
[mysqld] port = 3306 basedir=C:/software/mysql-5.7.21-winx64 datadir=C:/software/mysql-5.7.21-winx64/data max_connections=200 character-set-server=utf8 default-storage-engine=INNODB sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysql] default-character-set=utf8
增加环境变量。将
C:/software/mysql-5.7.21-winx64/bin
添加到path中(注意换成本机mysql目录)安装mysql
1
mysqld -install
初始化MySQL
1
mysqld --initialize-insecure --user=mysql
启动mysql
1
net mysql start
设置root密码,回车后会提示输入旧密码,直接回车即可
1
mysqladmin -u root -p password 密码
安装完成