pymysql.err.OperationalError: (2003, “Can‘t connect to MySQL server on ‘xxx.xxx.xxx.x‘ (timed out)“)

问题

python远程链接数据库报错pymysql.err.OperationalError: (2003, “Can’t connect to MySQL server on ‘xxx.xxx.xxx.x’ (timed out)”)

解决办法

在链接远程主机的数据库时,需要先使用ssh验证,再链接服务器上的数据库,一般都能解决

    def __init__(self):
        self.ssh_host = "主机地址"
        self.ssh_port = 22
        self.ssh_user = "主机名"
        self.ssh_password = "主机密码"
        self.mysql_host = "127.0.0.1"
        self.mysql_port = 3306
        self.mysql_user = "数据库用户"
        self.mysql_password = "数据库密码"
        self.mysql_db = "数据库名"
        self.server = None
        self.conn = None
        self.cursor = None

    # 链接对象
    def connect(self):
        self.server = SSHTunnelForwarder(
            (self.ssh_host, self.ssh_port),
            ssh_username=self.ssh_user,
            ssh_password=self.ssh_password,
            remote_bind_address=(self.mysql_host, self.mysql_port))
        self.server.start()
        self.conn = pymysql.connect(host=self.mysql_host,
                                    port=self.server.local_bind_port,
                                    user=self.mysql_user,
                                    passwd=self.mysql_password,
                                    db=self.mysql_db)
        # self.cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)
        self.cursor = self.conn.cursor()
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这个错误是由于python的pymysql模块在连接MySQL服务器时发生了超时错误。根据提供的引用内容,有几种可能的解决方法可以尝试: 1. 确保目标MySQL服务器的IP地址和端口号是正确的。如果IP地址或端口号不正确,连接将无法建立。 2. 如果你在连接远程Linux服务器上的MySQL数据库时遇到这个问题,可能是由于Linux服务器的防火墙导致的。尝试关闭Linux服务器上的防火墙,可以通过在虚拟机上打开终端并输入命令"firewall-cmd --state"来查看防火墙状态,如果显示为running,则表示防火墙正在运行中。关闭防火墙可能需要管理员权限。 3. 还有一种解决方法是在连接远程主机的数据库时使用SSH验证。可以通过提供正确的主机地址、用户名和密码来初始化一个SSH连接,然后再连接到服务器上的数据库。根据提供的代码,可以看到一个示例的初始化方法。你可以根据自己的需求和环境进行相应的修改。 请注意,这些解决方法只是常见的解决方法之一,具体解决方法可能因情况而异。如果问题仍然存在,请确保你的网络连接正常,并且可以在目标服务器上正常访问MySQL服务。如果问题仍然存在,请参考pymysql模块的官方文档或寻求相关支持。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [pymysql.err.OperationalError: (2003, “Can‘t connect to MySQL server on ‘xxx.xxx.xxx.x‘ (timed ...](https://blog.csdn.net/xiaommxhxxl/article/details/123018307)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [解决python连接mysql报错pymysql.err.OperationalError: (2003, “Can‘t connect to MySQL server on ...](https://blog.csdn.net/WOSHIBEIZHE/article/details/118164143)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向大佬看齐·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值