yii2连接MongoDb3.0出错,Authentication failed 。

请问,这是怎么回事?第一次使用yii2,请各路大神指点。
本地安装的mongodb3.2.4、composer安装的yii2。
mongodb的权限已经配置更好完毕,

使用auth之前,无法使用show dbs命令
clipboard.png

使用auth验证后可以使用show dbs命令,说明auth已经配置好了

clipboard.png

yii2配置如下
composer.json
clipboard.png
在web.php的components中配置
clipboard.png
控制器中如下
clipboard.png
之后浏览器中报错

clipboard.png

请问,这是怎么回事?第一次使用yii2,请各路大神指点。

阅读 4.7k
1 个回答

具体可以参见文章Yii2连接mongo权限问题(AuthenticationException)

权限问题,这里的权限是指mongoDB的权限,也就是你给的用户名密码han:123123无法操作你指定的数据库demo

其原因在于,你建立的账号han没有包含在数据库demo下。我猜你是把该账号建立在admin数据库下了。

当初建立账号时,你一定是如下执行的:

> use admin
> db.createUser({
    user:'han',
    pwd:'123123',
    roles:[
        role:'readWrite',
        db:'han'
    ]
})

这样建立的用户是建立在admin数据库下的。你可以执行show users查看到当前数据库下有哪些用户。

解决这个问题,只需要切换到相应的数据库下,建立用户即可:

# 这一步是关键,切换到相应的数据库下
> use demo
# 下面是一样的
> db.createUser({
    user:'han',
    pwd:'123123',
    roles:[
        role:'readWrite',
        db:'demo'
    ]
})

这个问题和http://www.yiichina.com/question/2086问题相同,可以相互参考。答案都是本人回答的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏