猿问

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

我用 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 是唯一一个空且可写的?


蛊毒传说
浏览 246回答 3
3回答

大话西游666

您可以在本地系统上安装 mysql 客户端,并连接到 RDS(使用端点)。这将给出所有数据库名称,等等。AWS 自己也创建了几个数据库,对于 postgres 我知道它创建为“rdsadmin”(用于其内部目的)您创建的数据库名称将出现在控制台的“详细信息->配置->数据库名称”部分(位于“创建时间”下方)下。

慕姐4208626

我遇到了同样的问题,对于AWS来说不是很直观。但是,如果打开de RDS控制台并打开所涉及的实例,则可以在“详细信息/配置”下看到数据库名称和用户:
随时随地看视频慕课网APP

相关分类

Python
我要回答