阿里云服务器上布了一个mysql,然后本地想要通过navicat连接,一直连接不上。

后来索性本地telent阿里云服务器的3306端口,发现连不通,于是想到3306端口并没有对外开放。一开始以为是linux服务器的防火墙,不过查看了服务器的防火墙等等也都没有开。

后来才知道,阿里云的服务器默认端口是不对外开放的,如果想要供外部访问,需要在安全组中手动添加规则。。。。这是个大坑啊

首先创建安全组,然后再安全组中添加规则,如下所示,详情可以参考官方文档
https://helpcdn.aliyun.com/document_detail/25471.html?spm=5176.doc25468.2.4.RfJyPU

这里写图片描述

添加规则之后,再用navicat连,报另一条错误

1045 access denied for user'root'@'localhost' using password yes

猜想是因为我本地使用root用户登录navicat,而root用户并没有开放外部的访问权限,而是只能localhost访问

下一步登陆mysql数据库,使用命令

这里写图片描述

果然root用户的访问权限是localhost,并不能从外部进行访问,需要手动赋权

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '******' WITH GRANT OPTION;

好了,这下又报错

 Your password does not satisfy the current policy requirements

也就是密码强度不符合,我也是醉了,使用下面的命令可以查看设置的密码强度校验规则

SHOW VARIABLES LIKE 'validate_password%';

这里写图片描述

果然是有很麻烦的校验,网上有很多去除这个校验的方法,不过都需要修改配置文件然后重启数据库,个人觉得有点麻烦,还有一种临时办法可以去除密码强度校验(不过下次登录又得用一遍,好处是不需要重启)

set global validate_password_policy=0;

好了,再输入上面的对root用户赋权的命令,大功告成

这里写图片描述

OK,到这里,服务器的3306端口也对外开放了,root用户也可以从外部进行访问了,navicat连接成功

说明
如有转载,请注明出处
http://blog.csdn.net/antony9118/article/details/77835715

Logo

更多推荐