首页 > 解决方案 > 为什么我不能从 aws lambda 访问数据库,但可以从具有相同登录数据的本地计算机访问?

问题描述

我在 Amazon RDS 中创建了一个新的 Mysql 数据库,并在我的本地计算机上通过控制台访问

mysql -u username -p -h test.c2nfdg67dbdpb.us-east-1.rds.amazonaws.com

现在我尝试使用 python 和 pymysql 模块通过 Aws Lamda 连接

rds_host  = "test.c2nfdg67dbdpb.us-east-1.rds.amazonaws.com"
name = 'username'
password = 'pass'
db_name = 'dbtest'

conn = pymysql.connect(rds_host, user=name, passwd=password, db=db_name, connect_timeout=5)

并得到一个错误ERROR] 2019-11-20T14:30:05.261Z 7b1ed2e0-03ba-4c62-9525-22d84582f (1049, "Unknown database 'dbtest'")

我完全不通过本地控制台使用数据库名称并获得访问权限,这似乎很奇怪。

ps我show databases;在本地控制台上运行,dbtest在数据库列表中看不到。我很困惑,因为当我创建新数据库时,我输入了一个名称,但只列出了默认数据库。那我和什么有联系?

pss hm 为什么数据库名称未定义?

在此处输入图像描述

标签: mysqlamazon-web-servicesaws-lambdapymysql

解决方案


您的代码显式尝试连接名为dbtest. 它要么连接到这个数据库,要么失败,这与你的 mysql 客户端相反,它可以在没有数据库选择的情况下连接。显然,数据库丢失了,因为您验证show databases结果不包括dbtest.

那么唯一可能的解释是从未创建数据库。


推荐阅读