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 } } } }
什么权限是设置错了吗?
答
在执行任何查询之前,您必须使用db.auth()对数据库进行身份验证。
从db.auth() DOC
db.auth()
允许用户从所述外壳内的数据库进行身份验证。
的db.auth()方法可以接受:
的用户名和密码。
db.auth(<username>, <password>)
包含用户名和密码,以及任选地,认证机构和一个摘要密码标志用户文档。
db.auth({ user: <username>, pwd: <password>, mechanism: <authentication mechanism>, digestPassword: <boolean> }
返回:当认证不成功 db.auth()返回0和1时,操作成功。
在运行该命令之前,您如何授权为用户? – Veeram
它正在通过使用mongo驱动程序的PHP运行,所以我假设这样做 –
我认为当你从php创建mongo连接时,你已经传递了用户凭证。创建连接时,你的网址是否有用户名和密码? http://php.net/manual/en/mongo.connecting.auth.php – Veeram