最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

环球快讯:MySQL错误ERROR 2003 (HY000) Can't connect to MySQL server .' (111)

来源:博客园

在MySQL中,如果访问/连接MySQL数据库时遇到“ERROR 2003 (HY000): Can"t connect to MySQL server on "xxx.xxx.xxx.xxx:xxx" (111)”这个错误,我们应该从哪些方面进行考虑和排查问题呢? 下图是我总结整理的一个思维导图,在遇到这个错误时的排查方向和排查思路。

下面来演示/介绍一个比较特殊的案例,在服务器上访问当前主机的MySQL时遇到了“ERROR 2003 (HY000): Can"t connect to MySQL server on "127.0.0.1:7306" (111)”

$mysql-h127.0.0.1-utest-p--port=7306Enterpassword:ERROR2003(HY000):Can"tconnecttoMySQLserveron"127.0.0.1:7306"(111)$perror111OSerrorcode111:Connectionrefused

其实访问本地MySQL,根本不用检查127.0.0.1这个IP是否能ping通,不过为了以防万一,我们还是验证一下


(相关资料图)

$ping127.0.0.1PING127.0.0.1(127.0.0.1)56(84)bytesofdata.64bytesfrom127.0.0.1:icmp_seq=1ttl=64time=0.046ms64bytesfrom127.0.0.1:icmp_seq=2ttl=64time=0.073ms64bytesfrom127.0.0.1:icmp_seq=3ttl=64time=0.071ms64bytesfrom127.0.0.1:icmp_seq=4ttl=64time=0.072ms64bytesfrom127.0.0.1:icmp_seq=5ttl=64time=0.071ms^C---127.0.0.1pingstatistics---5packetstransmitted,5received,0%packetloss,time4099msrttmin/avg/max/mdev=0.046/0.066/0.073/0.013ms

检查MySQL实例状态

然后我们检查一下MySQL服务是否正常,MySQL实例是否Crash掉了。

方式1:

$sudosystemctlstatusmysqld.service●mysqld.service-MySQLServerLoaded:loaded(/usr/lib/systemd/system/mysqld.service;enabled;vendorpreset:disabled)Active:active(running)sinceMon2023-03-1315:01:43CST;1weeks2daysagoDocs:man:mysqld(8)http://dev.mysql.com/doc/refman/en/using-systemd.htmlMainPID:143115(mysqld)Status:"Serverisoperational"Tasks:47(limit:49256)Memory:1.4GCGroup:/system.slice/mysqld.service└─143115/opt/mysql/mysql8.0/bin/mysqld--defaults-file=/data/conf/my.cnfMar1315:01:40yictmysqlu01systemd[1]:StartingMySQLServer...Mar1315:01:43yictmysqlu01systemd[1]:StartedMySQLServer.

方式2:

ps-Af|grepmysqld|grep-vgrepmysql14311511Mar13?03:47:43/opt/mysql/mysql8.0/bin/mysqld--defaults-file=/data/conf/my.cnf

如上所示,MySQL实例正常的,所以可以排除MySQL实例关闭或MySQL实例Crash的情况。

检查MySQL的监听端口

使用下面命令检查MySQL的监听端口

$netstat-lnp|grepmysql(Notallprocessescouldbeidentified,non-ownedprocessinfowillnotbeshown,youwouldhavetoberoottoseeitall.)tcp00192.168.9.203:73060.0.0.0:*LISTEN143115/mysqldtcp600:::33060:::*LISTEN143115/mysqldunix2[ACC]STREAMLISTENING3188552143115/mysqld/tmp/mysqlx.sockunix2[ACC]STREAMLISTENING3191315143115/mysqld/tmp/mysql.sock

如上所示,监听端口为7306,访问MySQL时指定的端口号也是7306,没有什么毛病。因此也可以排查这个因素。

检查参数bind-address

检查MySQL的配置文件中的bind-address参数

方式1:

$grepbind_addressmy.cnfbind_address=192.168.9.203

方式2:

mysql>SELECTVARIABLE_NAME,VARIABLE_VALUE->FROMperformance_schema.global_variables->WHEREVARIABLE_NAME="bind_address";+---------------+----------------+|VARIABLE_NAME|VARIABLE_VALUE|+---------------+----------------+|bind_address|192.168.9.203|+---------------+----------------+1rowinset(0.01sec)mysql>

bind-address的设置有以下三种情况:

bind-address=127.0.0.1#只允许本机访问。bind-address=某个网卡的ip#例如bind-address=192.168.9.203,只能通过ip为192.168.9.203的网卡访问。bind-address=0.0.0.0#此规则是系统默认配置,监听所有网卡,即允许所有ip访问。

这里由于设定参数bind_address=192.168.9.203,所以当我们使用127.0.0.1访问数据库就会被拒绝,从而抛出上面的错误。

那么这里有一个问题,如果数据库里面创建了两个账号test@"127.0.0.1"和test@"localhost",那么test@"localhost"是否也会遇到这个错误呢?你的答案是会还是不会呢? 正确答案是不会,因为localhost和127.0.0.1两者是有所区别的(下面部分内容来自参考资料[1]):

一、原理不同:

localhost的原理是不经网卡传输,不会受到网卡协议的限制。设置程序时本地服务用localhost,localhost不会解析成IP,也不会占用网卡、网络资源。127.0.0.1的原理是经过网卡传输的,依赖网卡协议,并受到网卡相关协议的限制。使用IP访问的时候,等于本机是通过网络再去访问本机,会涉及到网络用户的权限。

二、概念不同

localhost:也可以叫是local,正确的解释是:本地服务器的意思。它可以被配置为任意的IP地址可以通过hosts这个文件进行更改,不过通常情况下都指向:127.0.0.1127.0.0.1:在windows系统的正确解释是:本机地址的意思。127.0.0.1是保留地址之一,用来检验本机TCP/IP协议栈,可以Ping回送地址。如果回送地址Ping不通,就说明IP堆栈出了故障。如果通的话,表明网络出了问题。

三、指向不同

localhost是一个保留域名(RFC 2606) ,为了避免同狭义定义主机名混淆而单独列出。它不仅指向 127.0.0.1 这个IP地址,它同时还可以指向ipv6 的地址 。127.0.0.1 是回送地址,指本地机,测试使用。回送地址(127.x.x.x)是本机回送地址(Loopback Address),即主机IP堆栈内部的IP地址,主要用于网络软件测试以及本地机进程间通信,无论什么程序,一旦使用回送地址发送数据,协议软件立即返回,不进行任何网络传输。

具体原因如下:

mysql -h 127.0.0.1 访问MySQL的时候,使用 TCP/IP 连接

mysql -h localhost 访问MySQL的时候,它不会使用 TCP/IP 连接的,而使用Unix socket;此时,MySQL Server则认为该 client 是来自 “localhost”

参考资料

[1]

参考资料: https://www.termilk.com/181.html

关键词: