MySQL8.0授权远程访问

一:授权法

授权之前先查看一下当前数据库的访问权限:

img

我们发现“password”提示为位置字段、原来是因为MySQL8.0版本之前的数据库加密规则是mysql_native_password;MySQL8.0版本之后,加密规则是caching_sha2_password。我们用describe user;查看一下当前MySQL8.0数据库采用的新字段:

img

我们继续查看当前数据库的访问权限:

select host,user,authentication_string plugin from user;

img

我们看到当前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;

img

验证:

img

删除授权(谨慎操作):

delete from user where host = '%' and user = 'root';

img

提醒:Navicat12.1.8以前的版本连接MySQL8.0数据库会错误2059也是因为这个原因导致的、解决方法有2种:

1、把mysql用户登录密码加密规则还原成mysql_native_password、执行下面的命令修改加密规则(修改password为你的真实密码):

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

2、升级客户端的驱动器。

img

二:改表法

即将host字段的值改为%就表示在任何客户端机器上能以root用户登录到mysql服务器(建议在开发时设为%)。

update user set host = '%' where user = 'root';
flush privileges;

img

删除授权:

update user set host = 'localhost' where user = 'root';
flush privileges;

验证:

img

推荐文章