首先知道为什么报错:
-
密码错误: 输入的密码不正确。请检查密码是否输入正确,并确保密码区分大小写。
-
用户不存在: 用户名 ‘root’ 不存在。请确认该用户是否已创建。
-
权限不足: 用户 ‘root’ 具有连接权限,但没有访问特定数据库或表的权限。请检查用户权限并根据需要授予适当的权限。
-
防火墙阻止: 防火墙可能阻止了对 MySQL 服务器的连接。请确保防火墙已正确配置,允许从客户端计算机连接到 MySQL 服务器。
-
服务器未运行: MySQL 服务器可能未在客户端计算机尝试连接的地址和端口上运行。请确认服务器正在运行并侦听连接。
解决方案:
跟着下面的流程来一遍:
1.进入Linux虚拟机中的mysql
输入命令:mysql -root -p 登录
2、查看 mysql 初始的密码策略,
输入语句
SHOW VARIABLES LIKE 'validate_password%';
进行查看,效果如下
2、首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
输入设值语句
set global validate_password_policy=LOW;
进行设值,
3、当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,
输入设值语句
set global validate_password_length=6;
进行设值,
4、现在可以为 mysql 设置简单密码了,只要满足六位的长度即可,最好要和Windows系统MySQL的密码不一样
输入修改语句
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
可以看到密码策略修改成功
5、赋予权限格式:grant 权限 on 数据库对象 to 用户@IP(或者相应正则)
注:可以赋予select,delete,update,insert,index等权限精确到某一个数据库某一个表。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
GRANT:赋权命令
ALL PRIVILEGES:当前用户的所有权限
ON:介词
*.*:当前用户对所有数据库和表的相应操作权限
TO:介词
‘root’@’%’:权限赋给root用户,所有ip都能连接
IDENTIFIED BY ‘123456’:连接时输入密码,密码为123456
WITH GRANT OPTION:允许级联赋权
6、再进行一个权限刷新:
flush privileges;
7、重启虚拟机,然后按照改正的密码登录
即可连接
注意:
这个流程是更改密码刷新权限的流程,执行下面流程之前先确保防火墙是否阻止了mysql的访问。
如果是防火墙问题,虚拟机中逐步执行下面代码即可,代码中的8080改成3306