前提: 如果是雲服務器,請先把安全組件相應的開發

  1. 查看服務器的端口3306是否存在

    netstat -an|grep 3306    
    
  2. 查看mysql的配置文件,修改或者添加bind-address=0.0.0.0

    [mysqld]
    port=3306
    bind-address=0.0.0.0

  3. 重啟mysql service mysql restart 嘗試訪問,不成功的話繼續操作

  4. 數據庫設置修改

    //登錄mysql

    mysql -u root -p

    //選擇mysql數據庫

    use mysql;

    //查看用戶表信息

    select user,host from user;

    //假定root用戶外網訪問,更新root用戶的host為%,上面如果存在不需要更新

    update user set host='%' where user='root';

    //授權處理

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root用戶的密碼' WITH GRANT OPTION;

    flush privileges;

    //重啟msql嘗試連接,如果不行的話,可能是防火牆的問題,繼續操作

  5. 防火牆設置 iptables為例

    service iptable status //查看防火牆狀態

    iptables -L -n --line-number |grep 3306 //--line-number可以顯示規則序號,在刪除的時候比較方便

    //iptables -D INPUT 3 //刪除input的第3條規則

    //不存在3306的端口的話,開放3306

    iptables  -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
    

    再次查看3306端口.此時應該可以看到

    iptables -L -n

    service iptables save //保存規則

    service iptables restart //重啟

  6. 參考下網上別的文章

    1. http://blog.51yip.com/linux/1404.html
    2. https://dzer.me/2016/05/04/ubuntu-%E5%BC%80%E5%90%AFmysql%E8%BF%9C%E7%A8%8B%E8%BF%9E%E6%8E%A5/