使用Django连接到AWS RDS MySQL数据库时了解哪个数据库用作'NAME'

时间:2018-08-22 16:32:32

标签: python django database amazon-web-services amazon-rds

我用RDS创建了一个新的AWS mysql数据库实例,并且试图从我的机器上的Django应用程序连接到它。 Django要求将默认数据库连接的格式设置为settings.py

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'innodb', 'USER': 'username', 'PASSWORD': 'password', 'HOST': '--------.us-west-2.rds.amazonaws.com', 'PORT': '####' } }

我的问题与'NAME'参数有关。我使用RDS控制台中提供的终端节点和端口号从命令行连接到AWS实例,并检查那里有哪些数据库。这是我使用RDS创建的全新数据库实例,共有5个数据库。

$ mysql -h ---------.us-west-2.rds.amazonaws.com -P #### -u username -p Enter password:

mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | innodb | | mysql | | performance_schema | | sys | +--------------------+

这些数据库中唯一一个为空的数据库称为innodb。起初我以为NAME参数应该是'mysql',因为那是我正在使用的数据库服务器的名称。但是,当我使用“ mysql”作为名称并运行python manage.py migrate时,我收到一条错误消息

django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table ((1044, "Access denied for user 'username' to database 'mysql'"))

NAME更改为'innodb',使我可以使用migrate命令连接和写入表。

为什么我需要使用innodb数据库而不是mysql或其他任何数据库?在AWS上创建新的RDS实例时,我没有提到创建5个数据库,也没有提到连接到RDS实例时应该使用的名称。这5个数据库的目的是什么?为什么innodb是唯一一个空且可写的数据库?

3 个答案:

答案 0 :(得分:1)

它在“配置”标签中。

enter image description here

答案 1 :(得分:0)

我遇到了同样的问题,对于AWS来说不是很直观。

但是,如果打开de RDS控制台并打开所涉及的实例,则可以在“详细信息/配置”下看到数据库名称和用户:

enter image description here

答案 2 :(得分:0)

您可以在本地系统上安装mysql客户端,并与RDS连接(使用端点)。这将给出所有数据库名称,等等。

AWS本身还创建了一些数据库,对于Postgres,我知道它创建为“ rdsadmin”(出于内部目的)

您创建的数据库名称应出现在控制台的“详细信息->配置->数据库名称”部分(位于“创建时间”之下)