windows上安装的mysql8忘记了密码,如何使用无密码登录

396 阅读3分钟

windows上安装的mysql8忘记了密码,如何使用无密码登录:

在mysql5时,无密码登录可以使用参数:--skip-grant-tables,使用该参数启动时不会加载授权表信息。

mysqld --skip-grant-tables

image.png

如上图所示,没有任何反应,即使是将该参数配置在ini文件中也不行;原因是在mysql8中该方法不太适用。
另外一种方法是使用--init-file参数启动:

# 首先关闭服务,如上图所示。这里是没有赋予管理员权限所致。也可在任务管理器中手动停止。
1,net stop mysql8
# 创建一个文件
2,创建一个初始化启动文件,文件内容为:
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
# 使用--init-file参数启动
3,mysqld  --init-file f:mysqlc.txt --console

image.png

从上图可以看到mysql服务已经启动了,然后cmd打开一个新的页面,连接mysql8数据库。

# 这时登录不需要密码
1,mysql -u root 
# 切换到mysql数据库
2, use mysql
# 修改user表中root密码,'root'为新密码
3alter user 'root'#'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;

image.png

此时使用Navicat premium 12连接mysql8时报错 Authentication plugin 'caching_sha2_password' cannot be loaded.

出现这个原因是mysql8 之前的版本中加密规则是 mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种:
一种是升级navicat驱动
一种是把mysql用户登录密码加密规则还原成mysql_native_password

修改加密规则为mysql_native_password:


1, ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
2,FLUSH PRIVILEGES;
3,重新连接即可

重新安装教程

1,首先以管理员的身份进入cmd命令行:

net stop [mysql服务名]   #停止之前的mysql服务

2,删除原先的mysql文件
3,重新解压mysql压缩文件,并创建mysql.ini配置文件
4,进入解压文件bin目录下执行命令:

mysqld --initialize --console #初始化mysql服务

# 接着会输出初始化信息,信息里面有生成临时登录密码

image.png 5,根据上面生成的临时文件执行登录操作:

mysql -u root -p  #登录

6,登录成功后执行命令时会报错:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

这是因为临时密码需要重置一下,执行修改密码的命令即可:

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root' PASSWORD EXPIRE NEVER;

修改后 重新登录即可。

mysql 8.0 用户权限设置

1.创建用户账户

#创建hadoop用户,密码hadoop,%表示所有id均可连接,如果要限制只能本地连接可改为localhost
create user 'hadoop'@'%' identified by 'hadoop';

2.设置用户权限范围

#all privileges表示所有操作权限;也可有选择的设置:select,insert,update,delete,drop,create,index等
#*.*  第一个*通配数据库,第二个*通配表
#with grant option表示该用户可给其它用户赋予权限,但不可能超过该用户已有的权限
grant all privileges on *.* to 'hadoop'@'%' with grant option;

3.刷新权限配置

flush privileges;