Question

I have a Django application that is running just fine on two other servers. It is using MySQL as the database.

I have the user setup for a new instance of the application on a new server so that I can successfully connection via the mysql command line client to the remote database.

However, when I attempt to run ./manage.py syncdb, it tell me:

django.db.utils.OperationalError: (1045, "Access denied for user 'app_user'@'mynewserver.com' (using password: YES)")

Every place I've looked online tell me to make sure the user is setup in mysql and has permission to the new database and even to run flush privileges;. I have double checked all of those and done this multiple times. That doesn't seem to be the issue.

Any thoughts?

EDIT

Also, I just checked and running the following from the python command line works fine too:

conn = mysql.connect(host='mynewserver.com', user='app_user', passwd='secret', db='myapp').cursor(mysql.cursors.DictCursor)

EDIT 2

I just ran ./manage.py sql myapp > myapp.sql; ./manage.py dbshell < myapp.sql

Everything worked, it created the tables just fine. I'm assuming that would use the same permissions and settings as running ./manage.py syncdb. What gives?!?

Versions

  • Python==2.7.6
  • Django==1.6.1

EDIT 3

I guess I should also add that I am using South==0.7.6. If that helps.

Was it helpful?

Solution

I did leave something out that I didn't think was relevant, but is totally relevant.

This application has multiple databases defined. Syncdb only runs on one database at a time, and by default will run using the default database, as noted here: https://docs.djangoproject.com/en/1.6/topics/db/multi-db/#synchronizing-your-databases

However, when my user didn't have permission on the other database syncdb would fail. It didn't indicate which database it was trying to access.

Running ./manage.py reset_db from django-extensions, worked fine as well, before I made sure that the user had permissions on all databases.

I would assume then that there is a bug in syncdb. After more looking into this, I might have to report a bug to Django.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top