(二)阿里云ECS Linux服务器外网无法连接MySQL解决方法(报错2003- Can't connect MySQL Server on 'x.x.x.x'(10038))(自己亲身遇到的问题是防火墙的问题已经解决)
我的服务器买的是阿里云ECS linux系统。为了更好的操作数据库,我希望可以用navicat for mysql管理我的数据库。
当我按照正常的模式去链接mysql的时候,
报错提示:
2003- Can't connect MySQL Server on 'x.x.x.x'(10038)
于是,通过查找资料,我找到了解决的方法,其实是阿里云服务器为了安全默认不允许从外面链接Mysql数据库。
下面是解决整理的三种解决的方法:
第一种、监听地址配置错误解决方法:
检查mysql服务端口(默认为3306)是否正常监听在127.0.0.1上,如果监听在127.0.0.1上那只允许服务器本身访问的,其他地址是访问不了的,可以通过下面方法来确定端口监听以及修改监听地址;
#netstat -nal |grep 3306 //查看3306端口监听情况,如果监听端口在127.0.0.1上,需进行更正。
#find / -name my.cnf //查找MySQL配置文件路径
#vim /etc/my.cnf //编辑配置文件,将bind-address = 127.0.0.1参数,更改为bind-address = 0.0.0.0 或注释此行。
重启mysql服务(centos7以上为以下命令)
systemctl restart mysqld
问题解决。
第二种、被防火墙阻拦解决方法:
如果排查mysql服务监听在0.0.0.0地址3306端口上,需检查防火墙设置。如果是被防火墙拦截,需开放数据库服务端口。
注意:此处有坑。
第一步:我们可以关闭防火墙,看看外部可不可以链接。
service iptables stop
如果是centos7以上用以下命令关闭防火墙
systemctl stop iptables (我遇到问题关闭防火墙就解决了)
第二步:当关闭防火墙可以访问的时候,问题就出现在我们的端口上。打开端口配置文件,仔细看看是不是3306端口。我就没看清楚,写的是3066,整的我把数据库重新安装还没解决问题。
vi /etc/sysconfig/iptables
下面接着来:
iptables -L iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
第三种、USER表配置错误解决方法:
监听地址和防火墙检查无误,需进入mysql数据库内部,检查USER表是否没有放开远程访问。如果没有开启远程访问,开启即可。
mysql> use mysql; //进入到mysql库中
mysql> update user set host = '%' where user = 'root'; //更改USER这张表中的访问地址为% mysql> select host, user from user; //查看是否更改成功
同时还需要向mysql数据库里的“user”表里对某个用户添加相关授权(以下是对root用户添加所有权限操作并设置登录密码)。
具体步骤:
1.授权(此处是对root用户授权mysql所有数据库)
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'newpwd' WITH GRANT OPTION;
如果针对某个特定的用户test授权某个指定的数据testdb用下面例子中的命令
mysql>GRANT ALL PRIVILEGES ON `testdb`.* TO 'test'@'%' IDENTIFIED BY 'newpwd' WITH GRANT OPTION;
2.刷新权限使其生效
mysql>flush privileges;
配置完成之后记得重启服务器。
出处:https://www.cnblogs.com/zmdComeOn/
个性签名:努力生活,努力走路
阿里云拼团:https://www.aliyun.com/1111/home?userCode=f4ee1llo1核2G1M,86一年,229三年;2核4G5M,799三年;2核8G5M,1399三年
腾讯云三月采购计划特价:https://cloud.tencent.com/act/cps/redirect?redirect=1073&cps_key=15d0b1673287c43fe946626d9f4e2eee&from=console1核2G1M,88一年;1核2G1M,268三年;2核4G5M,998一年;4核8G5M,2888元三年