mysql 8.0远程连接_MySQL8.0远程连接和用户授权相关设置

1、开启MySQL远程连接

mysql -u root -p #进入MySQL数据库后进行一下操作。

mysql> use mysql;

mysql> update user set user.Host=’%’ where user.User=‘root’;

mysql> flush privileges;

注:将Host设置为‘%’表示任意IP都能连接MySQL,也可以将‘%’改为指定ip

c031246e4d3b2eae631483a4cb35836b.png

如果远程连接遇到如下报错:

Unable to load authentication plugin 'caching_sha2_password'.

原因: 是因为mysql8使用的是caching_sha2_password加密规则。

解决方法:

修改远程连接用户的加密规则。

mysql> ALTER USER ‘test’@’%’ IDENTIFIED WITH mysql_native_password BY ‘12345’;

修改配置文件。

#vi /etc/my.cnf

加入下面内容:default_authentication_plugin=mysql_native_password

2、关闭MySQL远程连接

如果有关闭远程连接的需求,其实我们只需要Host恢复成默认设置(只能本地连接)即可,如下:

mysql -u root -p #进入MySQL数据库后进行一下操作。

mysql> use mysql;

mysql> update user set user.Host=‘localhost’ where user.User=‘root’;

mysql> flush privileges;

f51b41666880b9f172a6256d9529cc0d.png

以上的操作都可以通过查看MySQL的user表的host、user字段来验证是否修改成功:

mysql> select host,user from user;

164d45699b6003957fb7981e1e84160c.png

3、修改防火墙规则,开放端口

如果服务器防火墙未关,在开启了MySQL的远程连接之后还需要进行防火墙的设置,开放其端口(如:3306),这里以centos7为例,其他版本的请自行百度,如下:

#centos7 开启防火墙端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

90e1dd5ecd2500274c18e28aa79389ff.png

参数说明:

--zone         #作用域

--add-port=3306/tcp   #添加端口,格式为:端口/通讯协议

--permanent      #永久生效,没有此参数重启后失效

systemctl restart firewalld #重启防火墙,或者 firewall-cmd --reload(更新防火墙规则)

firewall-cmd --list-ports #查看已经开放的端口

79de20d17e2d6ab775fb24659d16c32f.png

systemctl status firewalld #查看防火墙状态,或者 firewall-cmd –state

到此,基本就可以用工具远程连接MySQL了。

4、创建用户以及给用户授权

授予 test 用户拥有所有库所有表的所有权限

在授予权限前先说一下MySQL8.0的新语法:

因为MySQL8.0提升了安全级别,更加严谨,所以创建用户并授权不能和以前一样用一条SQL语句完成,现在必须先创建用户设置密码,再进行授权。

#以前可以直接用如下一条SQL:

mysql> grant all privileges on . to test@’%’ identified by ‘12345’;

如果在MySQL8.0中执行上面这个SQL会报SQL语法错误。

#在MySQL8.0中必须先创建任意主机可访问的用户:

mysql> create user test@’%’ identified by ‘12345’;

#然后再对用户进行授权:

mysql> grant all on . to test@’%’; #privileges 可以省略!

mysql> flush privileges; #刷新权限

f2e1e727badff5694a3165de41f5bd5e.png

注意:在MySQL8.0中,如果创建了用户并授予了all 权限,那么即便用 root 用户也可能无法删除这些用户,会报

ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation

如图:

2a3deb59e9fc9ff736c69816d423b118.png

原因:这是由于MySQL8.0新增了一个SYSTEM_USER权限,如果创建用户并授予all权限时,就会赋予SYSTEM_USER权限,而root用户并没有这个权限,所以无法删除其他用户。

解决办法:

不授予用户all权限。(一般为了安全是不可能给一个用户授予all权限的,即便root也没有all权限)

mysql> show grants for root@’%’;

2bb4d8cf66fcbd7beac9a9054beabe20.png

授予root用户SYSTEM_USER,然后删除其他用户。

mysql> grant SYSTEM_USER on . to root@’%’;

mysql> flush privileges;

mysql> drop user test@’%’;

21ea3524b5d58b3889e1474052cf793c.png

授予 test 用户拥有所有库所有表部分权限

mysql> grant select,insert,update on . to test@’%’;

mysql> flush privileges;

399856bd4493007a87406df96eda2596.png

3. 授予 test 用户拥有testdb库所有表部分权限

mysql> grant select,insert,update on testdb.* to test@’%’;

mysql> flush privileges;

57769e053490012b351276b6dff6fe75.png

4. 授予 test 用户拥有testdb库test表的部分权限

mysql> grant select,insert,update on testdb.test to test@’%’;

mysql> flush privileges;

736c438d3ccff10100cc8ccba2a7f78c.png

更多的权限请自行琢磨,或者一起来琢磨(滑稽.jpg)

5、删除用户及权限

mysql> drop user test@’%’;

mysql> drop user test1@localhost;

欢迎进群:747509472 交流学习!感谢指正!

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值