0

Я следил за каждым руководством и учебным пособием по настройке RDS MySQL для моего приложения Django. Все работает нормально. Когда я развертываю, я не получаю ошибок. Мой сайт работает. Но когда я пытаюсь получить доступ к остальной структуре, которую я установил, или я пытаюсь войти на страницу администратора, я получаю ProgrammingError, что таблица не существует (ни одна из таблиц не существует).Приложение Django, развернутое на эластичном beanstalk с MySQL RDS - таблицы никогда не создаются

Доступ к базе данных, похоже, не является проблемой, все переменные среды RDS настроены, настроена группа безопасности и т. Д. Я даже могу получить доступ к базе данных из моего локального клиента mysql, и я могу что в базе данных нет таблиц.

У меня есть команды, настроенные в моем файле конфигурации для запуска 'django-admin.py makemigrations' и 'django-admin.py migrate', я даже попытался изменить это на 'python manage.py ...' и т. Д. , кажется, что команды никогда не работают.

Когда я схожу в свою эластичную среду beanstalk, я могу войти в mysql, используя «mysql -u my_username». Однако, если я перейду в папку, где находится мое приложение, и попытаюсь запустить «python manage.py makemigrations» вручную, я получаю это: django.db.utils.OperationalError: (1045, «Доступ запрещен для пользователя« my_username »@ 'локальный' (используя пароль: ДА) ")

Вот мой конфиг ...

requirements.txt

virtualenv==15.0.1 
Django==1.9.5 
django-compressor==2.0 
django-model-utils==2.4 
djangorestframework==3.3.2 
dj-database-url==0.4.0 
gunicorn==19.4.5 
MySQL-python==1.2.5 
jsonfield==1.0.3 

.ebextentions/01_packages.config

packages: 
    yum: 
    git: [] 
    gcc: [] 
    mysql: [] 
    mysql-devel: [] 
    python-devel: [] 

. ebextenti Дополнения/project.config

container_commands: 
    01_makemigrations: 
    command: "source /opt/python/run/venv/bin/activate && python manage.py makemigrations --noinput" 
    leader_only: true 
    02_migrate: 
    command: "source /opt/python/run/venv/bin/activate && python manage.py migrate --noinput" 
    leader_only: true 
    03_createsu: 
    command: "source /opt/python/run/venv/bin/activate && python manage.py createsu" 
    leader_only: true 
    04_collectstatic: 
    command: "source /opt/python/run/venv/bin/activate && python manage.py collectstatic --noinput" 

settings.py

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': os.environ['RDS_DB_NAME'], 
     'USER': os.environ['RDS_USERNAME'], 
     'PASSWORD': os.environ['RDS_PASSWORD'], 
     'HOST': os.environ['RDS_HOSTNAME'], 
     'PORT': os.environ['RDS_PORT'], 
    } 
} 

Пожалуйста, помогите. Спасибо!

+0

Что такое 'os.environ [ 'RDS_USERNAME']' и 'os.environ ['RDS_HOSTNAME']' нравится? Можете ли вы опубликовать фиктивные значения? Например, если ваш 'rds_username' является 'jhon' post 'doe', если это 'jhon @ localhost' сообщение 'doe @ localhost'? –

+0

@MuhammadTahir Переменные среды RDS похожи на «mansoorsiddiqui» для имени пользователя и т. Д. Они не содержат в них «@Localhost». Имя хоста - это только URL-адрес, предоставленный конечной точкой RDS. Я также могу подключиться, используя эти значения, в MySQL workbench. –

+0

'' Доступ запрещен для пользователя 'my_username' @ 'localhost' (с использованием пароля: YES). «Это заставляет меня задуматься. Если это было «Доступ запрещен для пользователя« my_username »@« IP OF APPLICATION SERVER »(с использованием пароля: YES)», то это означало бы, что вам нужно добавить имя пользователя @ yourappserverip для пользователей MySQL. –

ответ

0

Посмотрите, настроена ли группа безопасности RDS в группах безопасности EC2 для вашего эластичного бобового стебля. Он должен выглядеть следующим образом:

группы безопасности EC2: ваш-выстр-группа-имя-безопасности, ваш-Elastic-Beanstalk-Security-Group