MySQL远程连接出现ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'的问题

MySQL远程连接ERROR 2003 (HY000):Can‘t connect to MySQL server on‘XXXXX‘的问题

问题描述:

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

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

Enter password:  www.2cto.com

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

[[email protected] ~]$ perror 111

OS error code 111: Connection refused

查看errorCode

[[email protected] ~]$ perror 111

OS error code 111: Connection refused

问题分析:

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的监听  www.2cto.com

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

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

[mysqld]

bind_address=127.0.0.1

知识说明:这种情况可以TCP/IP连接

通过查看了my.cnf文件,以上两个都是没设置的,排除掉这两种情况

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进行监听。

ps -ef | grep mysqld

果然是: 85上的MySQL使用的是3308 port.

最终连接方式:加上--port=3308

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

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

为什么出现这么低级的错误呢?

因为我一直在用85上的MySQL, 而且每次都是直接用mysql -uroot就连接上了,没有指定--port,这样我就一直以为这MySQL的port一直是默认的3306的。

其实根本原因是:

1. MySQL本地连接,如果不指mysql --protocol=tcp, 连接默认是socket方式连接的。这点大家都知道。  www.2cto.com

2, MySQL socket连接是根据sokect文件来的,与--port不相关的,如果是一机多实例,则用-S(或者--socket=name )来指定连接哪个实例。

就是这个socket连接对--port无识别效果,导致排查这个问题这么久。

见下面: 其实85上只有一个port为3308的MySQL实例,但是用3306仍然是连接上此实例,说明socket连接方式忽略--port参数。

-bash-3.2$ mysql -uroot --port=3308

Welcome to the MySQL monitor. Commands end with ; or \g.

mysql -uroot --port=3306

Welcome to the MySQL monitor. Commands end with ; or \g.

再次说明基础细节很重要啊。

MySQL远程连接出现ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'的问题

时间: 2024-11-24 04:20:14

MySQL远程连接出现ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'的问题的相关文章

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远程连接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

解决Ubuntu系统下 mysql 远程连接失败的问题 ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xx.xx' (110)

如果远程连不上mysql.cnf 里面也修改了:bind注销掉了127.0.0.1 等所有的 但是telnet xxx.xxx.xx.xx 3306 端口 不通:那么 就是防火墙的问题了 1.修改Ubuntu系统防火墙规则 [[email protected] ubuntu]#vim /etc/iptables.rules 解决Ubuntu系统下 mysql 远程连接失败的问题 ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.x

ERROR 2003 (HY000): Can't connect to MySQL server on '129.28.149.240' (111) mysql 无法远程连接

环境: ubuntu  mysql 一. 查看端口 可以看到mysql监控的是本机Ip [email protected]:/etc/mysql/mysql.conf.d# netstat -apn|grep 3306 tcp 0 127 0.0.0.1:3306 0.0.0.0:* LISTEN 12770/mysqld 二. 修改mysql 配置文件 将bind-address = 127.0.0.1 # 表示允许任何主机登陆MySQL port=3306 改为 bind-address =

IT忍者神龟之mysql远程连接:ERROR 1130 (HY000): Host '*.*.*.*' is not allowed to connect to this MySQL server解决

安装完MySQL后,远程连接数据库的时候,出现 ERROR 1130 (HY000): Host '192.168.0.1' is not allowed to connect to this MySQL server提示信息,不能远程连接数据库.考虑可能是因为系统数据库mysql中user表中的host是localhost的原因,于是,我尝试把这个值改为自己服务器的ip,果然就好用了,不过用 mysql -u root -p命令就连不上数据库了,需要用mysql -h 服务器ip -u roo

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.

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 on '192.168.1.165' (113)

原文转自:http://blog.csdn.net/chengyuqiang/article/details/54285857 1.程序报错: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link 2.尝试远程连接数据库: [[email protected] ~]# mysql -h192.168.1.165 -uroot -p123456 ERROR 2003 (HY000): Can't c

ERROR 2003 (HY000): Can’t connect to MySQL server on ‘127.0.0.1’ (111) 修复无法连接到MySQL服务器

昨天重新装好Ubuntu然后配置完Django和pycharm后忘了测试mysql,今天配置时遇到了问题: ERROR 2003 (HY000): Can't connect to MySQL server on '(IP地址)' (111) 修复无法连接到MySQL服务器 这是一个链接MySQL的常见问题 下面是处理它的基本步骤. 1.如果数据库服务器是在远程计算机上,然后尝试使用测试客户端-服务器连接ping命令,例如: $ ping server_ip_address Ping主机 一旦有