ERROR 2003 (HY000): Can't connect to MySQL server on 'ip'(111)

问题描述:
 

从一台linux远程连接另一台linux上的MySQL, 出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘ip‘(111)错误。

 

[[email protected] ~]$ mysql -hxxx.xxx.xxx.85 -uroot -p

Enter password:  123456  

ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘xxx.xxx.xxx.85‘ (111)

问题分析:

1.可能网络连接问,远程ping xxx.xxx.xxx.85 ,能ping通,排除此情况

 

[[email protected] ~]$ ping xxx.xxx.xxx.85 

PING xxx.xxx.xxx.85 (xxx.xxx.xxx.85) 56(84) bytes of data.

64 bytes from xxx.xxx.xxx.85: icmp_seq=1 ttl=63 time=0.230 ms

 

2. 排查可能由于85上my.cnf里配置了skip_networking或者bind_address,只允许本地socket连接

2.1 在[mysqld]下设置skip_networking,

知识说明: 这使用MySQL只能通过本机Socket连接(socket连接也是本地连接的默认方式),放弃对TCP/IP的监听  

当然也不让本地java程序连接MySQL(Connector/J只能通过TCP/IP来连接)。

2.2 可能使用了bind_address=127.0.0.1(当然也可以是其他ip)

[mysqld] 

bind_address=127.0.0.1

请把这行注释掉 #bind_address=127.0.0.1
 

3.排查DNS解析问题,检查是否设置了: skip_name_resolve。 这个情况肯定不可能,因为我用的是ip,不是主机名。

 

[mysqld]

skip_name_resolve

知识说明:这个参数加上后,不支持主机名的连接方式。
 

4. 排查用户和密码问题, 其实用户和密码的错误,不会出现111的,所以排除用户密码问题

ERROR 1045 (28000): Access denied for user ‘root‘@‘XXXX‘ (using password: YES)
 

5. 排查--port问题,有可能85的MySQL port不是默认3306, 这样我远程连接时,没有指定--port,用的是3306, 而85上没有对3306进行监听。

netstat -nplt | grep mysql

tcp  0  0 0.0.0.0:3306 0.0.0.0:*  LISTEN 11107/mysqld

测试连接:  mysql -u root -p -h xxx.xxx.xxx.85 --port 3306

6.最坑的防火墙:

1.检查防火墙状态

[[email protected] ~]# service iptables  status

Redirecting to /bin/systemctl status  iptables.service

iptables.service - IPv4 firewall with iptables

Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled)

Active: active (exited) since Wed 2016-11-02 23:10:51 CST; 14min ago

Process: 12024 ExecStop=/usr/libexec/iptables/iptables.init stop (code=exited, status=0/SUCCESS)

Process: 12078 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)

Main PID: 12078 (code=exited, status=0/SUCCESS)

Nov 02 23:10:51 iZ288zn7gymZ iptables.init[12078]: iptables: Applying firewall rules: [  OK  ]

Nov 02 23:10:51 iZ288zn7gymZ systemd[1]: Started IPv4 firewall with iptables.

正常启动。

查看是否放开mysql端口

[[email protected] ~]# iptables -L -n   (或者: iptables --list  )

Chain INPUT (policy DROP)

target     prot opt source               destination

ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0

ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:80

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:21

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:3306

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:443

ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0            limit: avg 100/sec burst 100

ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0            limit: avg 1/sec burst 10

syn-flood  tcp  --  0.0.0.0/0            0.0.0.0/0            tcp flags:0x17/0x02

REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

如果没有 3306 加入防火墙规则:

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

注意这样只能临时加入防火墙  需要把规则save到   /etc/sysconfig/iptables 文件下

[[email protected] ~]# service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
或者简单粗暴
直接vim /etc/sysconfig/iptables
增加一行  -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

完成后我的如下:

# Generated by iptables-save v1.4.21 on Thu Jan 28 19:16:55 2016

*filter

:INPUT DROP [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [1:152]

:syn-flood - [0:0]

-A INPUT -i lo -j ACCEPT

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

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

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

-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT

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

-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

-A INPUT -p icmp -m limit --limit 100/sec --limit-burst 100 -j ACCEPT

-A INPUT -p icmp -m limit --limit 1/sec --limit-burst 10 -j ACCEPT

-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn-flood

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

-A syn-flood -p tcp -m limit --limit 3/sec --limit-burst 6 -j RETURN

-A syn-flood -j REJECT --reject-with icmp-port-unreachable

COMMIT

# Completed on Thu Jan 28 19:16:55 2016

然后重启防火墙:

[[email protected] ~]# service iptables restart

Redirecting to /bin/systemctl restart  iptables.service

PS. 请保证mysql 进程正常启动的前提下 逐一排查以上几点。
参考: MySQL远程连接ERROR 2003 (HY000):Can‘t connect to MySQL server on‘XXXXX‘的问题
mysql权限及密码问题见:http://www.cnblogs.com/wangdaijun/p/5312424.html

ERROR 2003 (HY000): Can't connect to MySQL server on 'ip'(111)

时间: 2024-12-19 14:39:41

ERROR 2003 (HY000): Can't connect to MySQL server on 'ip'(111)的相关文章

[转]MySQL远程连接ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'(111) 的问题

装了个navicat ,然后去连接mysql服务器,一直连不上,一开始以为是防火墙问题,后来防火墙都关闭, iptable服务关闭,还是不行,网上查了下:主要是因为设置了bind_address=127.0.0.1 原文引用: 问题描述: 从一台linux远程连接另一台linux上的MySQL, 出现ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.85'(111)错误. [mysql@vvmvcs0 ~]$ my

ERROR 2003 (HY000): Can't connect to MySQL server on 'ip address' (111)的处理办法

远程连接mysql数据库时可以使用以下指令 mysql -h 192.168.1.104 -u root -p 如果是初次安装mysql,需要将所有/etc/mysql/内的所有配置文件的bind-address=127.0.0.1全都注释掉 [mysqld] # # * Basic Settings # user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3

ERROR 2003 (HY000): Can't connect to MySQL server

一.问题的提出 /usr/local/webserver/mysql/bin/mysql -u root -h 172.29.141.112  -p -S /tmp/mysql.sockEnter password: ERROR 2003 (HY000): Can't connect to MySQL server on '172.29.141.112' (113) 二.问题的分析 出现上述问题,可能有以下几种可能 1. my.cnf 配置文件中 skip-networking 被配置 skip

[MYSQL] 使用 mysql-5.6.10-win32 (MySQL 5.6纯净版 ) 出现ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

win : window 10 mysql : mysql-5.6.10-win32 (MySQL 5.6纯净版 ) download From : Qt开源社区 http://www.qter.org/portal.php?mod=view&aid=10  ( https://pan.baidu.com/s/1boJQvJh ) 使用 mysql-5.6.10-win32 (MySQL 5.6纯净版 ) 出现ERROR 2003 (HY000): Can't connect to MySQL

mysql报错ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

23:29:02/2017-05-03 现象描述:在Command Line Client可以登陆,但是在命令提示符cmd下登陆出错. 我最终的解决办法是: 我先去看了一下我的my.ini配置文件. 新版5.7的配置文件不是在安装目录,而是在programDat/mysql文件目录下 打开文件之后: 我在安装的时候修改了默认端口3306为8082, 在cmd登陆的时候仍然是默认端口登陆的,所以会报错.那么在登陆的 时候可以指定端口, -P一定要大写. mysql报错ERROR 2003 (HY0

ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.56.105' (113)

[[email protected] ~]# mysql -uroot -h192.168.56.105 -p Enter password: ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.56.105' (113) 问题的分析 出现上述问题,可能有以下几种可能 1. my.cnf 配置文件中 skip-networking 被配置 skip-networking 这个参数,导致所有TCP/IP端口没有被监听,也就是说

mysql绿色版安装问题解决(ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061))

原来一直是使用MySQL安装版没有出现过问题,今天在安装绿色版MySQL时出现了点问题 在安装成windows服务成功后,用net start mysql 启动时提示启动成功,但当我连接mysql就报以下错误: ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061) my.ini文件内容: [mysqld]basedir=E://databases//mysqldatadir=F://databases//

MYSQL服务 ERROR 2003 (HY000): Can't connect to MySQL server on "********" 的问题解决

今早来到公司发现昨晚还好好的数据库跑不起来了,这对于本是C语言主编的本人刚刚操作后台来说未免一头雾水. 而且该问题的出现大多是因为一夜突发毫无征兆,或者因为mysql重装.而且网上的题解也有好多答复重装,真是... 具体问题如下: 想必看到这个对于刚刚上手操作mysql的朋友来说都回去查看一下10061这是个什么错误吧. 可恰巧,本人用的是windows系统,网上大多题解都是linux操作环境下的(说到这里,作为程序猿真应该研究一下linux,那也得等现在的项目完毕啊). 像my.cnf配置文件

ERROR 2003 (HY000): Can't connect to MySQL server on '' (10060) CentOS7 安装二进制包mysql5.7.19

前两天在阿里买了个ECS云服务器,CentOS7.3的.安装mysql5.7.19 官网最新版的 全名mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz,二进制版本. 5.7.19较之前的版本有了很大的变化: 1.从MySQL 5.7.18开始,my-default.cnf不再包含在安装包中.2.解压后包根目录里没有data,所以解压之后先新建data,一个存储mysql所有数据库和表的文件夹.初始化的目的也是先初始化它,开始时为空.3.5.7.6 版本开始,M