MySQL8.0授权远程访问

  • A+
所属分类:MySQL数据库

一:授权法

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

MySQL8.0授权远程访问

我们发现“password”提示为位置字段、原来是因为MySQL8.0版本之前的数据库加密规则是mysql_native_password;MySQL8.0版本之后,加密规则是caching_sha2_password。

我们用describe user;查看一下当前MySQL8.0数据库采用的新字段:

MySQL8.0授权远程访问

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

select host,user,authentication_string plugin from user;

MySQL8.0授权远程访问

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

MySQL8.0授权远程访问

验证:

MySQL8.0授权远程访问

 

删除授权(谨慎操作):

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

MySQL8.0授权远程访问

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

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

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

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

MySQL8.0授权远程访问

 

二:改表法

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

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

flush privileges;

MySQL8.0授权远程访问

 

删除授权:

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

flush privileges;

 

验证:

MySQL8.0授权远程访问

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: