MongoDB用户未被授权到

问题描述:

在Mongo中,我创建了一个数据库并专门为该数据库创建了一个用户。当我键入“显示用户”我得到这个:MongoDB用户未被授权到

rs0:PRIMARY> show users; 
    { 
     "_id" : "sampleuser.sampleuser", 
     "user" : "sampleuser", 
     "db" : "sampledb", 
     "roles" : [ 
      { 
       "role" : "readWrite", 
       "db" : "sampledb" 
      }, 
      { 
       "role" : "dbAdmin", 
       "db" : "sampledb" 
      } 


] 
} 

但是当我尝试与该用户执行命令,我得到如下:

not authorized on sampledb to execute command { find: "social_posts", filter: { customer_id: "123", 0: { posted: { $ne: 1 } } } } 

什么权限是设置错了吗?

+0

在运行该命令之前,您如何授权为用户? – Veeram

+0

它正在通过使用mongo驱动程序的PHP运行,所以我假设这样做 –

+0

我认为当你从php创建mongo连接时,你已经传递了用户凭证。创建连接时,你的网址是否有用户名和密码? http://php.net/manual/en/mongo.connecting.auth.php – Veeram

在执行任何查询之前,您必须使用db.auth()对数据库进行身份验证。

db.auth() DOC

db.auth()

允许用户从所述外壳内的数据库进行身份验证。

的db.auth()方法可以接受:

  1. 的用户名和密码。

    db.auth(<username>, <password>) 
    
  2. 包含用户名和密码,以及任选地,认证机构和一个摘要密码标志用户文档。

    db.auth({ 
    user: <username>, 
    pwd: <password>, 
    mechanism: <authentication mechanism>, 
    digestPassword: <boolean> 
    } 
    

返回:当认证不成功 db.auth()返回0和1时,操作成功。