數(shù)據(jù)庫連接不成功:
報(bào)錯(cuò)信息:ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.1' (111)
1萍桌,可能網(wǎng)絡(luò)連接問梗夸,遠(yuǎn)程ping xxx.xxx.xxx.1 号醉,能ping通,排除此情況
[mysql@vvmvcs0 ~]$ ping xxx.xxx.xxx.1
PING xxx.xxx.xxx.1 (xxx.xxx.xxx.1) 56(84) bytes of data.
64 bytes from xxx.xxx.xxx.1: icmp_seq=1 ttl=63 time=0.230 ms
2畔派,排查可能由于1上my.cnf里配置了skip_networking或者bind_address,只允許本地socket連接它
2.1 在[mysqld]下設(shè)置skip_networking,
知識(shí)說明: 這使用MySQL只能通過本機(jī)Socket連接(socket連接也是本地連接的默認(rèn)方式)胞谈,放棄對(duì)TCP/IP的監(jiān)聽
當(dāng)然也不讓本地java程序連接MySQL(Connector/J只能通過TCP/IP來連接)烦绳。
2.2 可能使用了bind_address=127.0.0.1(當(dāng)然也可以是其他ip)
[mysqld]
bind_address=127.0.0.1
知識(shí)說明:這種情況可以TCP/IP連接
通過查看了my.cnf文件配紫,以上兩個(gè)都是沒設(shè)置的,排除掉這兩種情況躺孝、
3,排查DNS解析問題,檢查是否設(shè)置了: skip_name_resolve
[mysqld]
skip_name_resolve
知識(shí)說明:這個(gè)參數(shù)加上后惧眠,不支持主機(jī)名的連接方式氛魁。
4, 排查用戶和密碼問題, 其實(shí)用戶和密碼的錯(cuò)誤呆盖,不會(huì)出現(xiàn)111的,所以排除用戶密碼問題
ERROR 1045 (28000): Access denied for user 'root'@'XXXX' (using password: YES)
5宙项,排查--port問題株扛,有可能5的MySQL port不是默認(rèn)3306, 這樣我遠(yuǎn)程連接時(shí)盆繁,沒有指定--port旬蟋,用的是3306, 而1上沒有對(duì)3306進(jìn)行監(jiān)聽。
ps -ef | grep mysqld
果然是: 1上的MySQL使用的是3308 port.
最終連接方式:加上--port=3308
[mysql@vvmvcs0 ~]$ mysql -hxxx.xxx.xxx.1 -uroot -p --port=3308
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
情況2:ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.1' (113)
解決方法:確定遠(yuǎn)程機(jī)器的防火墻關(guān)閉冕碟,或在防火墻允許3306端口號(hào)