mysql8.0远程连接权限设置

主要设置两个地方,一个是数据库的远程连接权限,另外一个是需要放开端口3306的访问权限。

从网上查询解决办法,最后都解决不了。网上查到的信息大都是给root用户或者某个用户设置权限,使这个用户可以被远程连接访问。针对该问题的解决办法是通过语句GRANT ALL ON *.* TO 'root'@'%';为root用户(或者是其他用户)设置权限,但我试了几次都是失败的,都报错了,ERROR 1410 (42000): You are not allowed to create a user with GRANT。

由于我对mysql的基础知识掌握的不够,暂时也不能说我为了解决这个问题去系统的学习一下基础知识去,先找个成本低的方式解决问题吧。

我们可以通过上面的解决问题的代码中看到,其实就是给root用户一个访问权限,如果我们解决了这个问题,也就解决了上面的问题了。其次,我们知道mysql数据库安装完成后有默认的mysql数据库,里面有个user表,数据就是默认的系统用户的一些信息,包括权限。了解到这里就可以了,那么可以查询里面关键的几项数据来查看下:

select host,user,authentication_string,plugin from user;

执行结果如下:


我们看host和user两列,host和user中root对应的值为localhost,即root用户的访问权限为localhost,想把该用户的访问权限设置可远程连接,我们只需要把localhost更改为通配的%就可以了。上面的权限操作语句没有走通,这里就直接使用update语句来更改吧。

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

修改之后就将root用户的访问权限设置成了可远程访问了。

接下来的就要解决3306端口了。

解决3306端口的时候,有个小插曲,我的系统是centos7的,和之前版本的开放端口的方式略有不同,其中的安装安装或者更新iptables-services可参考:https://blog.csdn.net/hbysj/article/details/80816926

接下来居可以开启3306端口了:

扫描二维码关注公众号,回复: 2519519 查看本文章
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

重启防火墙:

service iptables restart

问题已经解决了。问题虽然解决了,但在mysql数据库权限设置那一部分有点投机的意思,正常情况下不能这么解决。不过有的时候时间紧张或知识储备有限的额时候,也可以作为尝试。多做尝试,不要怕出问题,仅限于在本地开发环境,线上的环境还是要谨慎。


猜你喜欢

转载自blog.csdn.net/hbysj/article/details/80819123