MySQL8的密码重置及一些相关的知识点?

前言

常讲二手资料害死人,可要是真不看,连上哪里找问题答案都不清楚,可能要撞的墙非撞不可吧!MySQL对咱们而言是个黑盒,我以为不涉及到优化的问题,暂时没必要过多探究它的运行机制,更况且还有那么多可视化工具.网上常见的重置root密码博客,不区分MySQL的版本,可实际上MySQL5和MySQL8仍是有一些不一样的,可是装了MySQL8还没多长时间,文件安装位置和数据存储位置刚刚搞清楚,很难明白版本的区别会对实际操做形成哪些影响.html

环境:windows7系统

版本:MySQL8.0.16mysql

安装方式:使用MySQL Installer安装 sql

问题描述

1.root帐户的密码被你忘了怎么办?手贱了一下,动了系统用户表又怎么办?windows

2.见识一下由密码重置操做连带的一系列知识点?安全

密码重置的解决方案:

官方文档:密码重置的解决方案(写得很好,除了不能彻底照搬之外,没毛病)服务器

第一方案:重启服务,读取文件

1.打开cmd命令行,切换至mysql安装位置,输入net stop mysql80,关闭mysql服务;工具

2.建立一个txt文件,好比命名为mysql-init.txt,写入ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';(可是该文件不宜放入过深的文件路径,若是过深,命令行在读取该文件时,可能会报参数过多的错误,放在C盘或D盘根目录就能够)优化

3.输入:mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file=D:\mysql-init.txt --console.net

mysql-init文件路径过深报错:命令行

密码修改为功:

4.执行ctrl+c退出命令,net start mysql80,开启mysql进程服务;

5.正常登录, mysql -u root -p,密码即为新密码,验证成功,为了安全,删除mysql-init.txt文件

第二方案:跳过验证,重置密码

1.net stop mysql80;关闭mysql进程服务;

2.依旧使用cmd在mysql程序安装位置的bin文件夹下,执行命令,输入 mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console --skip-grant-tables --shared-memory(没有--shared-memory没法跳过验证,mysql5好像不须要添)

3.从新打开一个cmd,输入mysql就能够进入 由于安装mysql,初始化过一遍,跳过验证时默认root帐户无密码.(初始化与mysqld --initialize-insecure --console,mysqld --initializ --console等命令有相关 )
4.在mysql客户端中,告诉服务器从新加载受权表,以便账户管理语句起做用: mysql> FLUSH PRIVILEGES;

5.而后更改'root'@'localhost' 账户密码。将密码替换为您要使用的密码 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

6.net start mysql80,从新启动mysql80服务,root帐户就可使用新密码

密码重置的相关知识点:

1.多数博客给出的方案没法直接使用的缘由:使用使用MySQL Installer安装后,mysql8.0安装时数据和程序路径是分开设置的 程序安装路径通常在:C:\Program Files\MySQL\MySQL Server 8.0 数据路径通常在:C:\ProgramData\MySQL\MySQL Server 8.0,数据路径这里是有my.ini配置文件用于配置mysql,一些命令须要读取该文件.mysql5没试过,多是在一块儿的

程序安装路径目录:

程序安装路径bin文件夹目录:
数据路径目录:

2.常见的3360,3360端口,是安装时mysql服务默认使用的端口号;

3.数据路径下的data文件夹和.ini配置文件.data中的.err文件会记录一些错误,是否算是错误日志还没有验证.my.ini配置文件未作过多研究,具体内容就不说了,密码重置须要读取该文件.初始化会重置Data文件夹和ini配置文件.(初始化命令的执行位置应该就是数据路径,不想做大死,因此也没试)初始化与mysqld --initialize-insecure --console,mysqld --initializ --console等命令有相关,一个会为root帐号生成随机密码,一个会将密码置为空,日志文档会记录密码信息;

4.mysqld --initialize-insecure --console,mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file=D:\mysql-init.txt --console等命令中的console,我以为最好加上这一参数,能够查看打印结果,能知道命令的执行成功与否;

5.net stop mysql80:当咱们在mysql客户端输入exit,只是断开了客户端和服务端的链接,后台服务进程(即mysqld)依旧在运行,net stop mysql80是关闭后台进程.为何是mysql80,mysql8安装时服务进程默认名为mysql80,应该能够改,或者mysqld --initializ --console初始化也行.

相关文章
相关标签/搜索