Los*_*101 3 macos macports mongodb mongo-shell
我花了大部分时间尝试将用户添加到mongodb 2.6.5.我通过macport安装并重新安装了Mongo.
试试#1( addUser(); ):
1. # switching to the admin user
> use admin
2. # db.addUser("admin", "password");
Run Code Online (Sandbox Code Playgroud)
使用时addUser();我收到此错误:
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
2014-11-03T15:19:16.193-0500 Error: couldn't add user: User and role management
commands require auth data to have schema version 3 but found 1 at src/mongo/shell/db.js:1004
Run Code Online (Sandbox Code Playgroud)
试试#2(createUser();):
1. # switching to the admin user
> use admin
2. # db.createUser("admin", "password");
Run Code Online (Sandbox Code Playgroud)
使用时createUser();我收到此错误:
2014-11-03T15:25:38.243-0500 Error: couldn't add user: no such cmd: 0 at src/mongo/shell/db.js:1004
Run Code Online (Sandbox Code Playgroud)
我花了很多时间查找其他人的问题和答案.有谁知道如何解决这一问题?
提前致谢.
createUser期望文档而不是字符串文字.例如:
db.createUser( { "user" : "accountAdmin01",
"pwd": "cleartext password",
"customData" : { employeeId: 12345 },
"roles" : [ { role: "clusterAdmin", db: "admin" },
{ role: "readAnyDatabase", db: "admin" },
"readWrite"
] },
{ w: "majority" , wtimeout: 5000 } )
Run Code Online (Sandbox Code Playgroud)
要么
db.createUser(
{
user: "accountUser",
pwd: "password",
roles: [ "dbAdmin", "userAdmin" ]
}
)
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅db.createUser()
但是,在添加用户之前,请执行以下操作检查auth架构是否存在:
db.system.users.find()
Run Code Online (Sandbox Code Playgroud)
如果它没有返回任何内容,则需要通过执行以下命令来创建模式:
db.system.users.insert({
"roles" : [ "userAdmin", "dbAdmin"],
"userSource":"$external",
"user" : "dbadmin"
})
Run Code Online (Sandbox Code Playgroud)
生成模式后,添加用户时不应出错.
或者如果您已升级到MongoDb 2.6版本,则需要通过执行以下命令来升级auth架构:
db.getSiblingDB("admin").runCommand({authSchemaUpgrade: 1 })
Run Code Online (Sandbox Code Playgroud)