问题描述:

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

[mysql@vvmvcs0 ~]$ 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' ()
// 查看errorCode:
[mysql@vvmvcs0 ~]$ perror 111
OS error code 111: Connection refused

问题分析:

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

[mysql@vvmvcs0 ~]$ 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
知识说明:这种情况可以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
[mysql@vvmvcs0 ~]$ 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方式连接的。
2、MySQL socket连接是根据sokect文件来的,与--port不相关的,如果是一机多实例,则用-S(或者--socket=name )来指定连接哪个实例。就是这个socket连接对--port无识别效果,导致排查这个问题这么久。

PS:其实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'的问题

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

  1. 【linux错误解决】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.x ...

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

    装了个navicat ,然后去连接mysql服务器,一直连不上,一开始以为是防火墙问题,后来防火墙都关闭, iptable服务关闭,还是不行,网上查了下:主要是因为设置了bind_address=12 ...

  3. 远程连接centos7 上的mysql报(ERROR 2003 (HY000): Can't connect to MySQL server on '168.x.x.x' (10060) )

    1.MySQL端口 因为上一篇文章我就已经给MySQL新建了一新用户,且赋予了远程连接数据库的所有权限(GRANT ALL PRIVILEGES ON *.* TO 'newuser' @ '%' I ...

  4. 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. 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) ...

  6. 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-a ...

  7. 【转】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.jd ...

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

    原来一直是使用MySQL安装版没有出现过问题,今天在安装绿色版MySQL时出现了点问题 在安装成windows服务成功后,用net start mysql 启动时提示启动成功,但当我连接mysql就报 ...

  9. (一)MYSQL ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.10.210' (111) 解决方法

    今天在测试MySQL的连接时候,发现连接不通过,并报错ERROR 2003 (HY000): Can't connect to mysql server on '192.168.10.210' (11 ...

随机推荐

  1. 阿里云-DRDS(转)

    分库分表 DRDS 在后端将数据量较大的数据表水平拆分到后端的每个 RDS 数据库中,这些拆分到RDS中的数据库被称为分库,分库中的表称为分表.DRDS 由每个分库负责每一份数据的读写操作,从而有效的 ...

  2. ubuntu16安装配置nginx

    Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev ...

  3. Chipscope使用

    作者:桂. 时间:2017-08-07  06:47:31 链接:http://www.cnblogs.com/xingshansi/p/7297482.html 前言 Chipscope在FPGA调 ...

  4. laravel中间件简单使用

    laravel内置了一个中间件来验证用户是否经过认证,如果用户没有经过认证,中间件会将用户重定向到登录页面,否则如果用户经过认证,中间件就会允许请求继续往前进入下一步操作. 当然,除了认证之外,中间件 ...

  5. linux命令行下使用反斜杠“\”调用别名的原命令

    经常看到linux软件的作者在介绍安装软件时,在命令前面加一个反斜杠,不解其意,后来查阅资料才知道,这是为了取消别名的调用,使用原命令. alias是shell的内置命令,可以用来设置命令的别名,如使 ...

  6. asp.net 通用的连接数据库实例代码

    asp.net中数据库连接代码,有需要的朋友可以参考一下. <%@ Page Language="C#" AutoEventWireup="true" C ...

  7. ise和modelsim联合仿真的一些准备

    首先要在modelsim中编译xilinx的三个库,分别是unisims库,simprims库,和corelib库,其中unisims库全称为(library of united component ...

  8. 【Android】17.4 Activity与IntentService的绑定

    分类:C#.Android.VS2015: 创建日期:2016-03-03 一.简介 本示例通过AlarmManager类以固定的时间间隔调用服务(每隔2秒更新一次随机生成的股票数据).如果将此示例的 ...

  9. jquery+ashx checkbox 单选判断是否true 和 false 传值操作

    示例图: html标签代码: <p></p> <label for="checkbox" style="float:left" & ...

  10. linux下调试core的命令

    在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数. 1.core文件的生成开 ...