今天,開發需要申請一個賬號:test@192.168.84.88 。連接時報了以下錯誤:
Warning: Using a password on the command line interface can be insecure.
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.84.87' (111)
遇到連接失敗,首先就是 ping 192.168.84.87
PING 192.168.84.87 (192.168.84.87) 56(84) bytes of data.
64 bytes from 192.168.84.87: icmp_seq=1 ttl=64 time=0.283 ms
64 bytes from 192.168.84.87: icmp_seq=2 ttl=64 time=0.712 ms
既然 ping 192.168.84.87沒問題,接下來就是 telnet 3306 端口了
telnet 192.168.84.87 3306
Trying 192.168.84.87...
telnet: connect to address 192.168.84.87: Connection refused
發現端口不通了之后,就可以把鍋丟給運維。然后安心的開其他事了。但,事情往往沒那么簡單,運維說他沒有限制 3306 端口。這一會就尷尬了。
查看一下 3306 端口是否還在
netstat -nalp | grep 3306
tcp 0 0 127.0.0.1:41758 127.0.0.1:3306 TIME_WAIT -
tcp6 0 0 :::3306 :::* LISTEN 6961/mysqld
發現本地有一個應用,使用 127.0.0.1 可以連接數據庫。難道是MySQL做了限制,上網查了下。發現MySQL有一個參數,可以限制 IP連接,就是 bind-address。下面是bind-address的解釋
bind-address 是MYSQL用來監聽某個單獨的TCP/IP連接,只能綁定一個IP地址,被綁定的IP地址可以映射多個網絡接口. 可以是IPv4,IPv6或是主機名,但需要在MYSQL啟動的時候指定(主機名在服務啟動的時候解析成IP地址進行綁定). 默認是"*"
接下來就是查看 my.cnf 了,發現還真的有這個參數
bind-address = 127.0.0.1
把他注釋了之后,重啟MySQL。連接正常