MySQL遠端連線ERROR 2003 (HY000) Cant connect to MySQL server on (10060)

lhrbest發表於2017-08-23

MySQL遠端連線ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'

(10060)的問題





D:\Users\xiaomaimiao>mysql -uroot -plhr -h192.168.59.159
Warning: Using a password on the command line interface can be insecure.
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.59.159' (10060)

原因:主機192.168.59.159上的防火牆未關閉
解決辦法:關閉防火牆,以下2個命令都需要執行:
chkconfig iptables off   ---永久
service iptables stop    ---臨時






問題描述:
 
從一臺linux遠端連線另一臺linux上的MySQL, 出現ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.85'(111)錯誤。
 
[@vvms0 ~]$ mysql -hxxx.xxx.xxx.85 -uroot -p
Enter password:    
ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.85' (111)
[mysql@vvmvcs0 ~]$ perror 111
OS error code 111: Connection refused
檢視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無識別效果,導致排查這個問題這麼久。
見下面: 其實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.
再次說明基礎細節很重要啊。 





About Me

.............................................................................................................................................

● 本文整理自網路

● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/

● 本文部落格園地址:http://www.cnblogs.com/lhrbest

● 本文pdf版、個人簡介及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址:

.............................................................................................................................................

● QQ群號:230161599(滿)、618766405

● 微信群:可加我微信,我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友646634621,註明新增緣由

● 於 2017-08-01 09:00 ~ 2017-08-31 22:00 在魔都完成

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

.............................................................................................................................................

小麥苗的微店

小麥苗出版的資料庫類叢書http://blog.itpub.net/26736162/viewspace-2142121/

.............................................................................................................................................

使用微信客戶端掃描下面的二維碼來關注小麥苗的微信公眾號(xiaomaimiaolhr)及QQ群(DBA寶典),學習最實用的資料庫技術。

   小麥苗的微信公眾號      小麥苗的DBA寶典QQ群1     小麥苗的DBA寶典QQ群2        小麥苗的微店

.............................................................................................................................................

MySQL遠端連線ERROR 2003 (HY000) Cant connect to MySQL server on (10060)
DBA筆試面試講解群1
DBA筆試面試講解群2
歡迎與我聯絡



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2144012/,如需轉載,請註明出處,否則將追究法律責任。

相關文章