question:突然报错认证失败!

web报错:

 

 

mongod.log日志打印:

 解决:

出现这个错误,在官方文档也找到了解释,原来在2.6版本做了很大的改进,其改进涉及到核心、存储、网络、查询和安全性等多方面,自然,其用户登录认证机制也发生了改变,db.system.users的schema也是是不同的,并且还增加了权限role的支持。

  好吧,那么就动手解决这个问题吧!因为数据库启用了--auth,所以必须先去掉--auth参数,把数据库重启一遍,创建一个mongDB的系统管理员账号,系统管理员账号创建好后,再加上--auth参数重启。

1)、配置文件中修改auth参数

2)、创建mongDB系统管理员账号

> use admin

> db.createUser(
  {
        user: "admin",
        pwd: "123456",
        roles:
        [
             {
                    role: "userAdminAnyDatabase",
                    db: "admin"
             }
        ]
   }
)

 

3)、加上--auth参数重启后,以刚才创建的admin用户登录:

> mongo

> use admin

> db.auth("admin", "123456")

 

4)、查看账号admin的用户信息与权限

> db.runCommand(

  {
        usersInfo:"admin",
       showPrivileges:true
  }
)

 

5)、接下来就是重点了,我的目标数据库是test,现在是该数据库无法登录,所以要为test数据库创建一个账号,并指定dbOwner权限,操作如下

> use test
> db.createUser(
   {
         "user": "xxx",
          "pwd": "xxx_pass",
           "roles":[
                            {
                                 "role": "dbOwner",
                                  "db": "test"
                            }
                      ]
    }
)

创建用户之后,就可以正常登录了.。遇到问题,还是多看官方文档,有时候百度真的不管用