最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】pymysql连接出错:pymysql.err.OperationalError 2003 Can’t connect to MySQL server on mysql.rds.aliyuncs.com Errno 61 Connection refused

MySQL crifan 9868浏览 0评论

折腾:

【已解决】把NLP部分的代码合并到当前Flask的app中

期间,调试发现代码运行出错:

  File "/Users/crifan/dev/dev_root/company/xxx/projects/robotDemo/app.py", line 255, in get

    aiResult = QueryAnalyse(inputStr, aiContext)

  File "/Users/crifan/dev/dev_root/company/xxx/projects/robotDemo/app.py", line 41, in QueryAnalyse

    mediaresult = AccessData(semantic,context)

  File "ai/nlp/dialog/AccessData.py", line 5, in AccessData

    mediaresult = SearchByKeyword(semantic.slots["story"])

  File "ai/nlp/dialog/data/xlstomysql.py", line 17, in SearchByKeyword

    db = pymysql.connect(**config)

  File "/Users/crifan/.local/share/virtualenvs/robotDemo-HXjMJQEQ/lib/python3.6/site-packages/pymysql/__init__.py", line 90, in Connect

    return Connection(*args, **kwargs)

  File "/Users/crifan/.local/share/virtualenvs/robotDemo-HXjMJQEQ/lib/python3.6/site-packages/pymysql/connections.py", line 699, in __init__

    self.connect()

  File "/Users/crifan/.local/share/virtualenvs/robotDemo-HXjMJQEQ/lib/python3.6/site-packages/pymysql/connections.py", line 967, in connect

    raise exc

pymysql.err.OperationalError: (2003, "Can’t connect to MySQL server on ‘xxx.mysql.rds.aliyuncs.com‘ ([Errno 61] Connection refused)")

搜:

pymysql.err.OperationalError 2003 Can’t connect to MySQL server on mysql.rds.aliyuncs.com Errno 61 Connection refused

讨论 – 廖雪峰的官方网站

去看log前面是否有详细信息,没有找到

Python3.x连接Pymysql – CSDN博客

python MySQLdb连接MySQL数据库报错(2003, "Can’t connect to MySQL server on ‘localhost’ (10061)")解决办法 – CSDN博客

AWS Developer Forums: Can’t connect to MYSql server on RDS …

python – PyMySQL can’t connect to MySQL on localhost – Stack Overflow

去把之前的host从阿里云的,外网无法访问的,换成IP:

config = {

    #’host’: ‘xxx.mysql.rds.aliyuncs.com’,

    ‘host’: ’47.x.x.x’,

结果:

还是不行。

后来发现了,貌似是:

此处之前别人代码,是放到mysql所在阿里云专用的ECS服务器上跑的。

所以可以直接访问,只能被阿里云内网识别的,另外一台,专门的mysql服务器:xxx.mysql.rds.aliyuncs.com

而此处是(Mac本地)外网去访问的,所以无法访问。

此处想要能访问感觉是:

首先要去加上安全组的端口,允许3306的入方向。

然后还要:

设置mysql服务器本身有外网IP?

貌似需要申请外网IP地址才可以?

设置内外网地址_网络管理_用户指南_云数据库 RDS 版-阿里云

“注意事项

在访问数据库前,您需要将访问数据库的 IP 地址或者 IP 段加入白名单,操作请参见设置白名单。

RDS 会针对外网地址流量收取一定费用,详细收费标准请参见云数据库 RDS 详细价格信息”

阿里云定价_云产品价格

“公网流量费用信息

RDS 只收取 RDS 往客户端发送的公网流量费用。

1 元/GB,每小时计费一次;不足 1GB 的流量,计入下个计费周期。”

以为是:

1.需要开通 mysql的 公网IP

2.为了安全 最好给我自己的IP加上白名单 -》防止别人访问

3.等测试完毕后 再去释放掉mysql的公网IP

但是被建议是

在本地的时候最好连本地mysql

所以需要我:

把你们在线的mysql 拷贝到本地 本地连本地的mysql去测

本地测试好后 再去改回连原先的阿里云的mysql内网的配置

然后代码放到服务器上跑

所以现在需要去:

【已解决】把阿里云上只能内网访问的mysql数据库备份到Mac本地

然后再去:

【已解决】Mac本地搭建mysql数据库并导入已备份出的sql文件

如此,本地已经有了正在运行的mysql,且也有了对应的yourDB这个数据库了。

去改一下配置:

再去试试是否可以正常连接了。

然后终于可以了,没有mysql连接的错误了。

【总结】

此处Flask的python中pymysql去连接远程mysql数据库出错:

xxx.mysql.rds.aliyuncs.com

的原因是:

xxx.mysql.rds.aliyuncs.com

这个mysql是阿里云的RDS数据库专用服务器,该名字是阿里云内网才能识别的名字,外网无法访问,只能内网(同处一个区域的服务器)访问。

此处,为了更加安全考虑,就不去开放外网访问权限了

(阿里云后台可以针对RDS数据库申请外网IP,再去加上IP白名单,也可以实现很好的安全控制)

所以就:

把服务器中的mysql,去用(登录阿里云ECS,和RDS数据库服务器同属于一个内网)mysqldump去导出子表,然后导入到Mac本地刚建mysql数据库,然后再去把配置改为:

config = {

    #’host’: ‘xxx.mysql.rds.aliyuncs.com’,

    ‘host’: "127.0.0.1",

    ‘port’: 3306,

    ‘user’: ‘root’,

    #’password’: ‘xxxx’,

    ‘password’: ‘crifan_mysql’,

    ‘db’: ‘yourDB’,

    ‘charset’: ‘utf8’,

}

即可正常连接。

转载请注明:在路上 » 【已解决】pymysql连接出错:pymysql.err.OperationalError 2003 Can’t connect to MySQL server on mysql.rds.aliyuncs.com Errno 61 Connection refused

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
89 queries in 0.180 seconds, using 22.18MB memory