无权写入 MongoDB
Unauthorized to Write to MongoDB
我正在尝试通过 mongo 引擎写入 mongo。
在我的 /etc/mongod.conf
中有 auth=true
。
我正在联系的用户是,
{
"user" : "dbexample",
"roles" : [
{
"role" : "dbOwner",
"db" : "dbexample"
}
]
}
不过我还是明白了,
>>> john = Employee(name="John Doe", age=25)
>>> john.save()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/mongoengine/document.py", line 394, in save
raise OperationError(message % unicode(err))
OperationError: Could not save document (command SON([('insert', u'employee'), ('ordered', True), ('documents', [SON([('name', u'John Doe'), ('age', 25), ('_id', ObjectId('56bc94d1f1d55600445bd085'))])]), ('writeConcern', {'w': 1})]) on namespace dbexample.$cmd failed: not authorized on dbexample to execute command { insert: "employee", ordered: true, documents: [ { name: "John Doe", age: 25, _id: ObjectId('56bc94d1f1d55600445bd085') } ], writeConcern: { w: 1 } })
编辑:
这是 Django Mongo 配置,
_MONGODB_USER = 'dbexample'
_MONGODB_PASSWD = '####'
_MONGODB_HOST = '172.17.0.1'
_MONGODB_NAME = 'dbexample'
_MONGODB_DATABASE_HOST = 'mongodb://%s/%s' % (_MONGODB_HOST, _MONGODB_NAME)
注意:如果我关闭身份验证,我可以正常写入数据库。
您的 mongodb 连接字符串应包括用户和密码,请参阅连接字符串格式 https://docs.mongodb.org/manual/reference/connection-string/
_MONGODB_DATABASE_HOST = 'mongodb://%s/%s' % (_MONGODB_HOST, _MONGODB_NAME)
应该是
_MONGODB_DATABASE_HOST = 'mongodb://user:password@%s/%s' % (_MONGODB_HOST, _MONGODB_NAME)
如此处所述https://jira.mongodb.org/browse/PYTHON-855问题可能出在连接字符串中,请尝试更改:
_MONGODB_USER = 'dbexample'
_MONGODB_PASSWD = '####'
_MONGODB_HOST = '172.17.0.1'
_MONGODB_NAME = 'dbexample'
_MONGODB_DATABASE_HOST = 'mongodb://%s:%s@%s/%s' % (
_MONGODB_USER, _MONGODB_PASSWD, _MONGODB_HOST, _MONGODB_NAME)
我正在尝试通过 mongo 引擎写入 mongo。
在我的 /etc/mongod.conf
中有 auth=true
。
我正在联系的用户是,
{
"user" : "dbexample",
"roles" : [
{
"role" : "dbOwner",
"db" : "dbexample"
}
]
}
不过我还是明白了,
>>> john = Employee(name="John Doe", age=25)
>>> john.save()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/mongoengine/document.py", line 394, in save
raise OperationError(message % unicode(err))
OperationError: Could not save document (command SON([('insert', u'employee'), ('ordered', True), ('documents', [SON([('name', u'John Doe'), ('age', 25), ('_id', ObjectId('56bc94d1f1d55600445bd085'))])]), ('writeConcern', {'w': 1})]) on namespace dbexample.$cmd failed: not authorized on dbexample to execute command { insert: "employee", ordered: true, documents: [ { name: "John Doe", age: 25, _id: ObjectId('56bc94d1f1d55600445bd085') } ], writeConcern: { w: 1 } })
编辑: 这是 Django Mongo 配置,
_MONGODB_USER = 'dbexample'
_MONGODB_PASSWD = '####'
_MONGODB_HOST = '172.17.0.1'
_MONGODB_NAME = 'dbexample'
_MONGODB_DATABASE_HOST = 'mongodb://%s/%s' % (_MONGODB_HOST, _MONGODB_NAME)
注意:如果我关闭身份验证,我可以正常写入数据库。
您的 mongodb 连接字符串应包括用户和密码,请参阅连接字符串格式 https://docs.mongodb.org/manual/reference/connection-string/
_MONGODB_DATABASE_HOST = 'mongodb://%s/%s' % (_MONGODB_HOST, _MONGODB_NAME)
应该是
_MONGODB_DATABASE_HOST = 'mongodb://user:password@%s/%s' % (_MONGODB_HOST, _MONGODB_NAME)
如此处所述https://jira.mongodb.org/browse/PYTHON-855问题可能出在连接字符串中,请尝试更改:
_MONGODB_USER = 'dbexample'
_MONGODB_PASSWD = '####'
_MONGODB_HOST = '172.17.0.1'
_MONGODB_NAME = 'dbexample'
_MONGODB_DATABASE_HOST = 'mongodb://%s:%s@%s/%s' % (
_MONGODB_USER, _MONGODB_PASSWD, _MONGODB_HOST, _MONGODB_NAME)