django.db.utils.OperationalError: (1045, доступ запрещен для пользователя '<user>' @ 'localhost'

Я не могу заставить мой проект Django правильно загрузить мою базу данных. Выкидывает эту ошибку.

Я запускаю MariaDB с Django, и я удалил все MySQL

Я добавил пользователя, запустив:

create database foo_db;
create user foo_user identified by 'foo_password';
grant all on foo_db.* to 'foo_user'@'%';
flush privileges;

как предложено в этом посте.

Консоль выдает мне эту ошибку обратно, когда я пытаюсь запустить ./manage.py runserver

django.db.utils.OperationalError: (1045, "Access denied for user '<user>'@'localhost' (using password: YES)")

Я выполнил команду 'create user' и создал пользователя в соответствии с моим сценарием установки, для которого по умолчанию установлено следующее:

        'ENGINE': 'django.contrib.gis.db.backends.mysql',
        'NAME': 'company_production',
        'USER': 'companydev',
        'PASSWORD': 'companydevpass',
        'HOST': 'localhost',
        'PORT': '',
        'ATOMIC_REQUESTS': True

Я перепробовал все, что смог найти здесь, связанный с ошибкой, которую она выдает, но ничего не помогло.

Я использую Mac OSX 10.11.1 El Capitan и MariaDB версии 10.1.8, если это вообще актуально.

3 ответа

Решение

Вот что я использую для воссоздания баз данных MySQL для проектов Django:

tmp="/tmp/mysql-tools.sh.tmp"

setup-db ( ) {
    cat <<EOF > $tmp
DROP DATABASE $DB;
CREATE DATABASE $DB;
GRANT USAGE on *.* to '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_PASS}';
GRANT ALL PRIVILEGES ON ${DB}.* to '${DB_USER}'@'localhost';
EOF
    cat $tmp
    mysql -f -u ${MYSQL_ROOTUSR} -p${MYSQL_ROOTPWD} < $tmp
    rm $tmp
}

Предупреждение: это падает и воссоздает!

Куда:

  • DB: имя базы данных
  • DB_USER: пользователь базы данных django
  • DB_PASS: пароль для подключения mysql для пользователя базы данных Django
  • MYSQL_ROOTUSR: пользователь root mysql (должен иметь разрешения для создания баз данных)
  • MYSQL_ROOTPWD: пароль root для mysql

Экспортируйте их в свою среду

Возможно, из-за того, что Django попытался использовать не того пользователя, а не того, что вы настроили в MySQL DB

изменить настройки из USERNAME -> USER может помочь:)

Я получил ошибку с

"NAME": "имя базы данных", "USERNAME": "root", "PASSWORD": "******", "PORT": "3306", "HOST": "localhost",

Но это работало с ---

"NAME": "имя базы данных", "USER": "root", "PASSWORD": "********", "PORT": "3306", "HOST": "localhost",

Ваша ошибка дает вам понять, где вы идете не так...

django.db.utils.OperationalError: (1045, "Access denied for user '<user>'@'localhost' (using password: YES)")

Это означает django пытаясь получить доступ к базе данных с пользователем userне то, что вы определили в settings.py,

Я думаю, что вы забыли сделать python manage.py migrate прежде чем делать runserver, так как ваши настройки еще не отражены внутри django двигатель.

Другие вопросы по тегам