遠程登陸mysql踩坑

遠程登陸服務器出現問題

登陸代碼: mysql -u username -p -h 服務器ip -P 端口號 -D 數據庫
出現了沒法登陸的bug,can't connnect to MySql server on 
複製代碼

網絡檢查

ping 服務器ip地址,能夠確保不是服務器網絡問題。若是是服務器問題就要找服務器網絡問題的方法。

telnet 主機ip 22 port

  • 若是沒法鏈接,多是你的主機沒有安裝ssh-server(通常系統只默認安裝ssh-client);mysql

  • 也多是防火牆把22端口禁用,不必定是網絡問題(這一步僅和上一步作對比;linux

  • 若是可以鏈接,說明網絡沒有問題,而是你的主機配置問題,而後按如下步驟繼續排查) sql

    我這裏22端口和3306端口均不能訪問,可是ip地址是能夠ping通的。我本身設置的27252端口爲ssh端口改爲22端口爲登陸端口了

檢查主機端口

1) netstat -ntpl | grep 3306 
tcp 0 0 127.0.0.1:3306 127.0.0.1:* LISTEN -
2) netstat -ntpl | grep 22 
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
複製代碼

注意:3306端口ip顯示爲127.0.0.1表示這個地址只能被本機訪問數據庫

mysql配置文件檢查

檢查my.cnf的配置,bind-address=addr能夠配置綁定ip地址。 
不配置或者IP配置爲0.0.0.0,表示監聽全部客戶端鏈接。
複製代碼

注意(我踩了這個坑):mysql 5.7的目錄改爲了/etc/mysql/mysql.conf.d/mysqld.cnf 而非以前的 /etc/mysql/mycnfubuntu

mysql用戶訪問權限

進入mysql數據庫vim

$mysql -u root -p
    >use mysql;
    >select host,user from user;
複製代碼

MySQL建用戶的時候會指定一個host,默認是127.0.0.1/localhost只能本機訪問; 其它機器用這個用戶賬號訪問會提示沒有權限,host改成%,表示容許全部機器訪問。centos

防火牆檢測

— ubuntu下使用ufw工具 sudo ufw status 查看防火牆狀態,在ubuntu下iptables通常被ufw接管,而selinux是默認不安裝的,若是你曾經安裝過,就須要禁用seliux並重啓系統了。 sudo ufw enable/disable 啓用和禁用防火牆 sudo ufw allow 3306 容許訪問3306端口bash

— 如下是centos等系統的作法:服務器

  • 1)iptables –list查看;
  • 2)開啓防火牆3306端口 vim /etc/sysconfig/iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(容許3306端口經過防火牆) /etc/init.d/iptables restart(重啓防火牆使配置生效)
  • 3)或者直接關閉防火牆; 參考:http://blog.csdn.net/fjssharpsword/article/details/50973283

參考資料:

blog.csdn.net/AIkiller/ar… blog.csdn.net/ynnmnm/arti… stackoverflow.com/questions/16161889/cant-connect-to-remote-mysql-server-with-error-61 網絡

相關文章
相關標籤/搜索