2017-05-28 35 views
0

简短问题 - 如何从我的开发阶段Django Web应用程序连接到现有的Amazon Web Services MySQL数据库?如何将开发阶段的Django Web应用程序连接到现有的AWS MySQL数据库?

上下文:

我正在使用Django框架创建网页。

我已经成功创建了一个AWS MySQL RDS数据库,并导入了我的数据并通过MySQL Workbench成功连接了它。

我现在正在尝试从我的Django应用程序连接到数据库。我将需要从应用程序内的数据库的只读功能...我不会写任何新的信息到数据库。此外,我正试图在开发环境中这样做,因为我甚至没有接近任何有价值的产品(即我在本地从我的笔记本电脑上工作)。

我已经将AWS数据库信息添加到我的Django settings.py文件中,并基于我的研究,生成必要的模型,我需要使用Django的“inspectdb”实用程序。我试过了,并且收到的错误是:

django.db.utils.OperationalError:(1045,u“拒绝访问用户”[我的用户名在这里,实际上显示了我的字面名比由AWS]建立任何类型的用户名的“@” pool- [我的IP地址在这里] .nwrknj.fios.verizon.net”

有其他人遇到这个问题,并确定了解决方案?

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 
    }, 
    '[removed]': { 
      'NAME': '[removed]', 
      'ENGINE': 'django.db.backends.mysql', 
      'USERNAME': '[removed]', 
      'PASSWORD': '[removed]', 
      'HOST': '[removed].us-west-2.rds.amazonaws.com', 
      'PORT': '3306' 
+0

你可以把你的数据库设置的anoymised版本,所以我们可以检查? – Withnail

+0

当然,请参见下面的(对不起,不知道如何格式化注释字段中的设置): 数据库= { “默认”:{ 的“发动机”:“django.db.backends.sqlite3”, “ NAME':os.path.join(BASE_DIR,'db.sqlite3'), }, '[removed]':{ 'NAME':'[removed]', 'ENGINE':'django.db。 backends.mysql', 'USERNAME':'[removed]', 'PASSWORD':'[removed]', 'HOST':'[removed] .us-west-2.rds.amazonaws.com', 'PORT':'3306' – abiero

+0

更新 - 我已将DB设置添加到原始问题中,而不是发表在评论中。谢谢! – abiero

回答

0

除非你有DATABASE_ROUTERS设置为使用备用数据库,则Django中的所有内容都将使用default数据库。在默认情况下摆脱当前的ENGINE和NAME,并将所有[removed]分贝信息移入default

还要确保AWS RDS端口3306对您的FIOS IP地址开放。理想情况下,您只能在AWS中将其限制为仅限实际服务器(无论是在AWS还是其他地方),但现在您可能必须设置广泛的IP范围,以便您的FIOS IP在开发期间定期更改。

+0

谢谢,我会在路由器上阅读,并给予一个镜头。 – abiero

+0

恰恰相反。如果您的Django应用程序中实际存在MULTIPLE数据库,则只需要路由器。如果你只有一个数据库,就好像是这样,只要把凭证移到'default',你就应该全部设置好了。 – manassehkatz

+0

原来我使用错误的语法来指定数据库设置。 我将“USERNAME”更改为“USER”,一切都像魅力一样。 – abiero

相关问题