Mysql 8.0.17忘记密码重置密码

Mysql 8.0.17安装配置踩坑之路

在公司一直都是连接公司的远程数据库,基本上用不到本地数据库,但是闲来无事时想自己学习一下后端框架搭建,自然而然就需要用到本地数据库了。PS:总不能在公司数据库瞎搞吧哈哈,搞坏了删库跑路?
说干就干,像我这样的进行了四年计算机专业知识的系统学习的菜鸟来说,安装个mysql还不是如德芙一般顺滑,hahaha后面可能啪啪打脸了哈哈
虽然之前我也安装过几次mysql了,但是每次安装的时候都是百度一下,毕竟程序员写程序就是ctrl+c、ctrl+v、google、baidu用一遍是吧!貌似每次安装的过程都不是那么顺利哈哈,这次终于决心把安装过程中踩过的坑记录下来,迈出这记录的一步实属不易啊!毕竟我那么懒的人!

1.下载

官网下载zip包,我下载的是64位的。甩个下载地址到你脸上,接好了:https://dev.mysql.com/downloads/mysql/

按照你系统的位数情况而定,现在基本上都是64位了吧。

下载完成后解压,解压到哪个盘都行,我解压后的地址为:E:\software\mysql-8.0.17-winx64

2.生成data文件

以管理员身份运行cmd:程序--输入cmd 找到cmd.exe 右键以管理员身份运行
cd到mysql安装目录下的bin目录下:E:\software\mysql-8.0.17-winx64\bin
执行命令:mysqld --initialize-insecure --user=mysql,在E:\software\mysql-8.0.17-winx64目录下生成data目录,data目录为数据库的数据的存放目录。

3.启动服务

执行命令:net start mysql,启动mysql服务,若出现“服务名无效的提示”,请看步骤4,否则无需步骤四,直接步骤五即可。

4.解决启动服务失败

提示:“服务名无效”

解决办法:
执行命令:mysqld -install 即可(不需要my.ini配置文件 注意:网上写的很多需要my.ini配置文件,其实不需要my.ini配置文件也可以,我之前放置了my.ini文件,反而提示服务无法启动,把my.ini删除后启动成功了)

若出现提示“服务正在启动或停止中,请稍后片刻后再重试一次”,需要去资源管理器中把mysql进程全结束了,重新启动即可。

5.登陆mysql

使用命令:mysql -u root -p
因为之前没有设置密码,root用户默认是没有密码的,因此出现让你输入密码的时候直接按回车即可。

E:\software\mysql-8.0.17-winx64\bin>mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.17 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

6.查询用户密码

查询用户密码命令:mysql> select host,user,authentication_string from mysql.user;

host:允许用户登录的ip‘位置’%表示可以远程;

user:当前数据库的用户名;

authentication_string:用户密码(后面有提到此字段);

7.设置(或修改)用户密码

默认root密码为空的话 ,使用navicat就无法连接,所以我们需要修改root的密码。
这是很关键的一步。此处踩过N多坑,各种百度各种坑啊,听我讲过之后慎踩啊。后来查阅很多才知道在mysql 5.7.9以后废弃了password字段和password()函数;authentication_string字段表示用户密码。

经过我失败几次的血泪史,整理出下面正确修改root用户密码的步骤:

  • 1.如果当前root用户authentication_string字段下有内容,先将其设置为空,否则直接进行二步骤。
use mysql; 
update user set authentication_string='' where user='root'
  • 2.使用ALTER修改root用户密码,方法为 ALTER user 'root'@'localhost' IDENTIFIED BY '新密码;'执行语句如下:
ALTER user 'root'@'localhost' IDENTIFIED BY 'Qin123#'

此处有两点需要注意:
1.不要像网上大多数教程说的那样用flush privileges来刷新权限。注意!!!是不要刷新!
2.密码要包含大写字母,小写字母,数字,特殊符号。
修改成功后使用新密码登陆即可。

注意!!!一定不要采用网上大多数的教程使用的方法修改密码,这个错误教程如下:

use mysql; 
update user set authentication_string="newpassword" where user="root";

这样会给user表中root用户的authentication_string字段下设置了newpassword值;

当再使用ALTER USER 'root'@'localhost' IDENTIFITED BY 'newpassword'时会报错的;

因为authentication_string字段下只能是mysql加密后的41位字符串密码;其他的会报格式错误;

*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE

至此,安装mysql和修改root密码告一段落。

8.navicat for mysql

我们使用navicat连接数据库时,账号密码都正确,但是会报1251连接错误。
欧克,我们先来看看这个改动:
在MySQL 8.04前,执行:SET PASSWORD=PASSWORD('[新密码]');
但是MySQL8.0.4开始,这样默认是不行的。因为之前,MySQL的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”

so,我们这里需要再次修改一次root密码。

先登录进入mysql环境:执行下面三个命令。(记得带上分号)

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;

OK.现在再去重连。perfect!

折腾了这么久,搞定啦。以后再装mysql的时候就可以不用掉坑了,撒花!撒花!撒花!

妈妈再也不用担心我安装mysql啦~

你可能感兴趣的:(Mysql 8.0.17忘记密码重置密码)