MySQL 远程连接“Can't connnect to MySQL server on localhost (0)”问题解决
2018-05-25| 程成| 1365| 0| MySQL

在我装完 iptables 防火墙后,远程数据库的时候报错了,如下。并且 PHPmyadmin 也无法访问。


image.png


但是当防火墙关闭的时候就又可以联通了,service iptables stop 。很显然,和防火墙有关。


因为防火墙关闭了 3306 端口,外面无法访问这个端口号了。我们需要配置 iptables,让3306端口对外开放。



解决方法:


一、修改配置文件


vi /etc/sysconfig/iptables


-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火墙)

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙)


特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的 22端口 这条规则的下面。


添加好之后防火墙规则如下所示:

####################################################

# Firewall configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT

-A INPUT -j REJECT –reject-with icmp-host-prohibited

-A FORWARD -j REJECT –reject-with icmp-host-prohibited

COMMIT

####################################################

/etc/init.d/iptables restart      #最后重启防火墙使配置生效




二、在 Shell 中敲入如下命令


#防火墙配置
----------
停止firewall
systemctl stop firewalld.service

禁止firewall开机启动
systemctl disable firewalld.service

查看防火墙的状态
firewall-cmd --state

###设置 iptables service
安装iptables-services服务
yum -y install iptables-services

重启防火墙使配置生效
systemctl restart iptables.service

设置防火墙开机启动
systemctl enable iptables.service

###设置防火墙的端口
web80端口
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

redis数据库端口
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT

mysql数据库端口
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

ES数据库端口
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 9200 -j ACCEPT

FTP端口
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

SSH端口
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

保存防火墙配置
service iptables save

查看防火墙配置文件 3306等 有这条信息
cat /etc/sysconfig/iptables

重启防火墙
systemctl restart iptables.service
/bin/systemctl restart  iptables.service

chkconfig iptables off
systemctl disable iptables.service

查看防火墙状态
systemctl status iptables.service #查看防火墙的状态
/bin/systemctl status  iptables.service

查看开放端口
netstat -ntl

#scp的使用说明
----------
把远程机的文件拷贝到本地目录
scp root@10.31.198.91:/data/yidian/yd2-erp.tar /data/soft

把本地文件上传到远程机的目录
scp /data/yidian/yd2-erp.tar root@10.31.120.222:/data/soft
-r 传文件夹的时候添加
-p 端口
> chattr -i /网站目录/.user.ini 后才能删除网站目录。

#查看文件大小
----------
du -h --max-depth=1 ydstatic.tar

#php相关命令
----------
INT, TERM 立刻终止
QUIT 平滑终止
USR1 重新打开日志文件
USR2 平滑重载所有worker进程并重新载入配置和二进制模块

###php-fpm 关闭:
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

###php-fpm 重启:
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

###查看php-fpm进程数:
ps aux | grep -c php-fpm

###查看安装的扩展:
/usr/local/php/bin/php -m



通过以上方法,解决了 MySQL 远程连接“Can't connnect to MySQL server on localhost (0)”的问题。





×
作者:程成
QQ:492245711