直接对root用户修改的方法
操作前请在 bin
目录下运行cmd,或者设置好bin的环境变量
- 登录MySQL
mysql -u root -p
- 回车后输入密码
- 选择 要操作的服务
use mysql;
我是使用的mysql作为名称,根据你自己服务器名称输入命令 - 查看mysql 数据库的 user 表中当前 root 用户的相关信息(host plugin)
select host,user,authentication_string,plugin from user;
mysql
执行完命令后显示一个表格, root 用户的 host默认显示的localhost,说明只支持本地访问,不允许远程访问。 - 先给root账户授权,这里我直接给了所有权限
grant all privileges on *.* to 'root'@'%' with grant option;
- 更改 root用户host 的默认配置
update user set host='%' where user='root';
- 执行前面的查询命令查看root的host是否改变为localhost(如果失败请继续往后看)
- 然后更改加密规则
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
- 更新用户密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
- 刷新权限
FLUSH PRIVILEGES;
mysql
成功后,可以看到root的host改变了,plugin也变成了mysql_native_password(以前也是mysql_na…但是要修改后才能真的连接成功,很玄学)
!如果上面的步骤你的修改不成功请接着往下看
直接添加用户的方法
很多人可能和我一样,前面的直接修改root用户失败,之后我尝试了直接添加用户的方法成功了,首先你要确保没有犯低级错误,上面的命令行大多是由分号的,请仔细检查.
-
启动cmd,到第三步骤为止都一样,先创建一个用户
Create user 'name'@'%' identified by 'password';
名字自己定密码自己定. 执行查询用户命令后可以看到多了一个用户,这里我创建的是else.它的host应该为localhost,之前我忘记截图了.他的plugin是caching_…..
对用户授权
grant all privileges on *.* to 'name'@'%' with grant option;
修改host
update user set host='%' where user='else';
修改加密方式
ALTER USER 'else'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
更新密码
ALTER USER 'else'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
刷新权限
FLUSH PRIVILEGES;
查询用户可以看到else用户的host为”%” plugin为”mysql_native_password”这样基本就代表成功了.
问题到此解决了!