前提: 如果是云服务器,请先把安全组件相应的开发

  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/