0

我有一个在另外两台服务器上运行良好的 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

一切正常,它创建了表格就好了。我假设这将使用与 running 相同的权限和设置./manage.py syncdb是什么赋予了?!?

版本

  • 蟒蛇==2.7.6
  • Django==1.6.1

编辑 3

我想我还应该补充一点,我使用的是 South==0.7.6。如果这有帮助。

4

1 回答 1

1

我确实遗漏了一些我认为不相关但完全相关的内容。

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

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

./manage.py reset_db在我确保用户对所有数据库具有权限之前,从 django-extensions运行也可以正常工作。

我会假设syncdb. 在对此进行更多研究之后,我可能不得不向 Django 报告一个错误。

于 2014-02-28T23:46:17.370 回答