Django,MySQL,syncdb:拒绝访问有效用户

时间:2014-02-28 23:02:15

标签: python mysql django django-syncdb

我有一个Django应用程序在其他两台服务器上运行正常。它使用MySQL作为数据库。

我在新服务器上设置了新应用程序实例,以便我可以通过mysql命令行客户端成功连接到远程数据库。

但是,当我尝试运行./manage.py syncdb时,它会告诉我:

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

我在网上看过的每个地方都告诉我要确保用户在mysql中设置并拥有新数据库的权限,甚至可以运行flush privileges;。我仔细检查了所有这些,并多次完成。这似乎不是问题。

有什么想法吗?

修改

另外,我刚检查并运行python命令行中的以下内容也可以正常工作:

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

编辑2

我刚跑了./manage.py sql myapp > myapp.sql; ./manage.py dbshell < myapp.sql

一切正常,它创造了很好的表格。我假设它将使用与运行./manage.py syncdb相同的权限和设置。 是什么给了什么?!?

版本

  • 的Python == 2.7.6
  • 的Django == 1.6.1

编辑3

我想我还应该补充说我正在使用South == 0.7.6。如果这有帮助。

1 个答案:

答案 0 :(得分:1)

我确实遗漏了一些我认为不相关的东西,但是完全相关。

此应用程序定义了多个数据库。 Syncdb一次只在一个数据库上运行,默认情况下将使用默认数据库运行,如下所示: https://docs.djangoproject.com/en/1.6/topics/db/multi-db/#synchronizing-your-databases

但是,当我的用户没有其他数据库的权限时,syncdb会失败。它没有说明它试图访问哪个数据库。

在确保用户拥有所有数据库的权限之前,从django-extensions运行./manage.py reset_db也运行良好。

我认为syncdb中存在错误。在进一步研究之后,我可能不得不向Django报告错误。