正如标题中所述,我正在使用django-mongodb-engine,并试图配置本地Django身份验证框架。我在网上读到了一些评论,说它应该是开箱即用的,没有一些特性。但是,我找不到任何教程,而且,我试图自己设置它时会出错。我最确定的问题与数据库权限有关。我已经在每个姜戈博士中包含了Django中间件和应用程序。但是,当我发出syncdb命令时,它会出现错误。
$ python manage.py syncdb
OperationFailure: database error: not authorized for query on MyDB.system.namespacessettings.py
DATABASES = {
'default': {
'ENGINE': 'django_mongodb_engine',
'NAME': 'MyDB',
'USER': 'mySuperUser',
'PASSWORD': 'mypass',
'HOST': 'XXX.XXX.XXX.XXX',
'PORT': '',
},
# some other DBs
}Mongo用户权限
myDB> db.system.users.find()
{ "_id" : ObjectId("..."), "user" : "mySuperUser", "pwd" : "...", "roles" : [ "readWriteAnyDatabase", "userAdminAnyDatabase", "dbAdminAnyDatabase", "clusterAdmin" ] }我不知道我能授予这个人什么其他权限,和/或我还需要在哪里创建这个用户。
有什么想法吗?
发布于 2014-02-12 17:07:27
在玩完之后,这里有个解决方案。您必须使用原生mongo admin数据库。因此,所需的改动:
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django_mongodb_engine',
'NAME': 'admin',
'USER': 'mySuperUser',
'PASSWORD': 'mypass',
'HOST': 'XXX.XXX.XXX.XXX',
'PORT': '',
},
# some other DBs
}用户mySuperUser必须自然存在于admin数据库中。为了确保身份验证操作(例如添加和删除用户)的安全性,我在mongo中授予了它userAdminAnyDatabase权限。权限可能过高,但我必须使用它来确定所需权限的适当范围。以下是权限:
// mongo
admin> db.system.users.find()
{ "_id" : ObjectId("..."), "pwd" : "...", "roles" : [ "readWriteAnyDatabase", "dbAdminAnyDatabase", "clusterAdmin", "userAdminAnyDatabase" ], "user" : "mySuperUser" }接下来,我们最终可以运行syncdb命令:
$ python manage.py syncdb
Creating tables ...
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'someUser'):
Email address: someUser@user.com
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installing indices for admin.LogEntry model.
Installing indices for auth.Group_permissions model.
Installing indices for auth.Group model.
Installing indices for auth.User_groups model.
Installing indices for auth.User_user_permissions model.
Installing indices for auth.User model.
Installing indices for sessions.Session model.
Installed 0 object(s) from 0 fixture(s)
$发布于 2014-06-06 15:26:38
对我来说,问题是我没有在我的SITE_ID中指定一个settings.py。我做了这个:
./manage.py shell
>>>from django.contrib.sites.models import Site
>>>Site().save()
>>>Site.objects.all()[0].id
u'5391dbc22ebd1212246d50c4'如果你不是“django.contrib.sites”,那么我不知道为什么这会是个问题。除非您一直在使用该模块,并且已经将集合/表安装到数据库中。无论是哪种情况,我都是这样让MongoDB再次正常工作的。
发布于 2014-03-19 21:33:27
我也遇到过同样的问题。我的Mongo托管在MongoLab上,我找不到任何解决这个错误的解决方案。尽管我的用户已经存在于我的数据库中,但我不想使用admin数据库。其他人遇到了同样的问题或者找到了解决办法?
https://stackoverflow.com/questions/21733706
复制相似问题