“db.createUser不是函数”,“密码不能为空”

时间:2014-04-12 19:08:11

标签: mongodb

我正在尝试在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()时:

Mongo output

我传递的对象是:

{
    user: "username",
    pwd: "passphrase",
    roles: [ 
        { 
            role: "userAdminAnyDatabase", 
            db: "admin" 
        }
    ]
}

2 个答案:

答案 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()。

  

http://docs.mongodb.org/manual/reference/method/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" ] }