美文网首页
连接远程mysql(主要是阿里云和ubuntu系统的防火墙设置)

连接远程mysql(主要是阿里云和ubuntu系统的防火墙设置)

作者: Jessieee_Y | 来源:发表于2019-11-29 19:08 被阅读0次

    我想在python代码中获取其他IP地址的mysql数据库的信息,直接这么写:db = torndb.Connection("IP地址","数据库名","root","密码"),等了好久,发现连不上。通过在阿里云网站上修改防火墙配置、更改ubuntu的iptables,最后能连上了。以下是我的步骤(Ubuntu 14.04, mysql 5.5):

    首先ping, telnet 你访问的IP地址

    例如:ping XXX.X.X.X  以及 telnet XXX.X.X.X 3306 

    ping失败,那问题就和3306端口以及mysql无关了,不讨论了。

    ping可以,但 telnet 失败,是3306端口没打开的原因。我就是telent失败,下面介绍我的解决方法:

    1. 添加阿里云安全组规则的MySQL 3306端口

    注:阿里云和ubuntu命令行的iptables必须都打开的,只要有一个没开那这个端口就是没开。

    2. 在MySQL用户表添加用户并将host设置未所有IP都能访问

    如果mysql用户表不允许的话,就算把防火墙关了也telent 3306失败,报这个错:'XX.XX.XX.XX' is not allowed to connect to this MySQL serverConnection closed by foreign host.

    前两点参照 MySQL5.7开启远程访问及Ubuntu18.04防火墙3306端口

    3.修改ubuntu下的 iptables 防火墙

        1. 查看当前防火墙的所有规则 iptables -L -n 

            看看有没有3306的,如果没有则添加规则:

    vi etc/iptables.rules     #注意:ubuntu不同版本的iptables文件路径可能不一样

    在最后增加一行:

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

    :wq   #保存退出

            如果有3306的话,那大概是长这个样子了:

            上图是我的iptables文件,里面3306有很多行,不懂为啥这么多重复的。

            如果3306那行是DROP的话,就通过vi /etc/iptables.rules 改成 ACCEPT。

         2. 保存iptables.rules文件并生效

             这个网上很多博客说的方法都不一样,ubuntu版本不同命令也不同吧,我是14.04。我试验成功的命令是 iptables-restore < /etc/iptables.rules,只要这一行就可以,在这之前不要sudo sh -c "iptables-save > /etc/iptables.rules"!!!否则刚修改好的iptables.rules就又变成原来的了。

    最后再telnet就发现连通了,成功的图如下:

    相关文章

      网友评论

          本文标题:连接远程mysql(主要是阿里云和ubuntu系统的防火墙设置)

          本文链接:https://www.haomeiwen.com/subject/pkwgwctx.html