我正在尝试在MongoDB上设置身份验证。我在配置文件中取消注释auth=true
并重新启动服务器。通过 mongo 的第一个连接被拒绝。第二个(紧接在第一个之后)经历了,我在日志中得到了这个:
Sat Apr 12 14:56:46 [initandlisten] connection accepted from 127.0.0.1:44001 #1
Sat Apr 12 14:56:46 [conn1] note: no users configured in admin.system.users, allowing localhost access
在控制台中,我能够执行命令,但是如果我尝试按照任何一些教程(包括官方教程),我会在执行db.createUser is not a function
或{{db.createUser()
时获得password can't be empty
1}}执行db.addUser()
时:
我传递的对象是:
{
user: "username",
pwd: "passphrase",
roles: [
{
role: "userAdminAnyDatabase",
db: "admin"
}
]
}
答案 0 :(得分:51)
你在运行什么版本的mongodb? db.createUser是在2.6版本中引入的
从2.6版开始不推荐使用:使用db.createUser()和db.updateUser()而不是db.addUser()来添加用户 到MongoDB。
在2.6中,MongoDB引入了用户凭据和权限的新模型,如安全性简介中所述。要在MongoDB 2.4上使用db.addUser(),请参阅MongoDB手册2.4版中的db.addUser()。
答案 1 :(得分:2)
根据我的经验,当您使用旧版本的Mongo Shell时,也会发生此问题。
因此,请确保根据MongoDB服务器的版本使用Mongo Shell。
$ mongo
MongoDB shell版本 v3.4.10
连接到:mongodb://127.0.0.1:27017
MongoDB服务器版本: 3.4.10
下面:
$ mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
Server has startup warnings:
2018-01-16T11:43:00.195-0600 I STORAGE [initandlisten]
2018-01-16T11:43:00.195-0600 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2018-01-16T11:43:00.195-0600 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
2018-01-16T11:43:00.687-0600 I CONTROL [initandlisten]
2018-01-16T11:43:00.687-0600 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-01-16T11:43:00.687-0600 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2018-01-16T11:43:00.687-0600 I CONTROL [initandlisten]
2018-01-16T11:43:00.687-0600 I CONTROL [initandlisten]
2018-01-16T11:43:00.687-0600 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-01-16T11:43:00.687-0600 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2018-01-16T11:43:00.687-0600 I CONTROL [initandlisten]
>
> use admin
switched to db admin
>
> db.createUser( {user:"mongoloide", pwd:"mongoloide*2017", roles:["root"]} )
Successfully added user: { "user" : "mongoloide", "roles" : [ "root" ] }