一:授权法
授权之前先查看一下当前数据库的访问权限:
我们发现“password”提示为位置字段、原来是因为MySQL8.0版本之前的数据库加密规则是mysql_native_password;MySQL8.0版本之后,加密规则是caching_sha2_password。我们用describe user;查看一下当前MySQL8.0数据库采用的新字段:
我们继续查看当前数据库的访问权限:
select host,user,authentication_string plugin from user;
我们看到当前root用户的访问权限为本地localhost、下面我们授权root用户进行远程访问(自行修改password为真实密码):
create user 'root’@’%’ identified by 'password’;
GRANT ALL ON *.* TO 'root’@’%’;
select host,user from user;
select host,user,authentication_string plugin from user;
flush privileges;
验证:
删除授权(谨慎操作):
delete from user where host = '%' and user = 'root';
提醒:Navicat12.1.8以前的版本连接MySQL8.0数据库会错误2059也是因为这个原因导致的、解决方法有2种:
1、把mysql用户登录密码加密规则还原成mysql_native_password、执行下面的命令修改加密规则(修改password为你的真实密码):
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
2、升级客户端的驱动器。
二:改表法
即将host字段的值改为%就表示在任何客户端机器上能以root用户登录到mysql服务器(建议在开发时设为%)。
update user set host = '%' where user = 'root';
flush privileges;
删除授权:
update user set host = 'localhost' where user = 'root';
flush privileges;