windows上安装的mysql8忘记了密码,如何使用无密码登录:
在mysql5时,无密码登录可以使用参数:--skip-grant-tables,使用该参数启动时不会加载授权表信息。
mysqld --skip-grant-tables
如上图所示,没有任何反应,即使是将该参数配置在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
从上图可以看到mysql服务已经启动了,然后cmd打开一个新的页面,连接mysql8数据库。
# 这时登录不需要密码
1,mysql -u root
# 切换到mysql数据库
2, use mysql
# 修改user表中root密码,'root'为新密码
3,alter user 'root'#'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
此时使用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服务
# 接着会输出初始化信息,信息里面有生成临时登录密码
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;