如何解决Mongodb 3.2.9开启用户权限认证问题
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章给大家分享的是有关如何解决Mongodb 3.2.9开启用户权限认证问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、在老版的Mongodb(大概3.0以前)可
千家信息网最后更新 2026年11月04日如何解决Mongodb 3.2.9开启用户权限认证问题
这篇文章给大家分享的是有关如何解决Mongodb 3.2.9开启用户权限认证问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、在老版的Mongodb(大概3.0以前)可以这样开启认证:
1、Linux环境下mongo shell方式认证:
>show dbs ##看到有如下数据 admin (empty) comment 0.203125GB dbtest (empty) foo 0.203125GB local (empty) test 0.203125GB >use admin switched to db admin > db.addUser('admin','12345678') ##添加用户 Mon Nov 5 23:40:00 [FileAllocator] allocating new datafile /data/db/admin.ns, filling with zeroes... { "user" : "admin", "readOnly" : false, "pwd" : "89e41c6c28d88d42c21fe501d82969ea", "_id" : ObjectId("5097ddd00342c63efff3fbfb") } ##之后运行 >showdbs Mon Nov 5 23:45:13 uncaught exception: listDatabases failed:{ "errmsg" : "need to login", "ok" : 0 } ##提示需要登录 添加--auth 启动 ./mongod -auth ./mongo >use admin switched to db admin > db.auth('admin','12345678') ##用添加的账户密码查看 Mon Nov 5 23:49:32 [conn56] authenticate db: admin { authenticate: 1, nonce: "304f5242601fafa4", user: "admin", key: "58260df384b1146466efca5c90a5ff05" } 1 #1 说明登录成功 > show dbs admin 0.203125GB comment 0.203125GB dbtest (empty) foo 0.203125GB local (empty) test 0.203125GB > use admin switched to db admin > show collections; system.indexes system.users > db.system.users.find() ##查找数据 { "_id" : ObjectId("5097ddd00342c63efff3fbfb"), "user" : "admin", "readOnly" : false, "pwd" : "89e41c6c28d88d42c21fe501d82969ea" }2、php代码连接认证:
melon; /*集合*/ $collection = melonco; /*选择数据库里面的集合,相当于表*/ $collection = $db->$collection; $array = array('name'=>'melon','age'=>'24','sex'=>'Male','birth'=>array('year'=>'1988','month'=>'07','day'=>'13')); $collection->insert($array); $cursor = $collection->find(); foreach ($cursor as $id => $value) { echo "$id: "; var_dump($value); echo "
"; } ###2 使用数据库用户 /*mongodb连接*/ $m = new Mongo("192.168.138.35:27017"); /*选择comment*/ $db = $m->melon; /*连接数据库*/ $db->authenticate("melon", "melon"); /*选择t数据库里面集合,相当于表*/ $collection = $db->melonco; $array = array('name'=>'melon_son','age'=>'0','sex'=>'Male','birth'=>array('year'=>'201X','month'=>'07','day'=>'13')); $collection->insert($array); $cursor = $collection->find(); foreach ($cursor as $id => $value) { echo "$id: "; var_dump($value); echo "
"; }二、在3.0版之后的Mongodb,shell中依旧可以使用上述方法验证,但是php认证一直失败,日志中会报错( Failed to authenticate myuser@userdb with mechanism MONGODB-CR: AuthenticationFailed MONGODB-CR credentials missing in the user document),原来新版的mongodb加入了SCRAM-SHA-1校验方式,需要第三方工具配合进行验证。
下面给出具体解决办法:
首先关闭认证,修改system.version文档里面的authSchema版本为3,初始安装时候应该是5,命令行如下:
> use admin switched to db admin > var schema = db.system.version.findOne({"_id" : "authSchema"}) > schema.currentVersion = 3 3 > db.system.version.save(schema) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })不过如果你现在开启认证,仍然会提示AuthenticationFailed MONGODB-CR credentials missing in the user document
原因是原来创建的用户已经使用了SCRAM-SHA-1认证方式
> use admin > db.auth('root','123456')> db.system.users.find(){ "_id" : "admin.root", "user" : "root", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "XoI5LXvuqvxhlmuY6qkJIw==", "storedKey" : "VAT7ZVMw2kFDepQQ6/E0ZGA5UgM=", "serverKey" : "TebHOXdmY6IHzEE1rW1Onwowuy8=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }{ "_id" : "mydb.test", "user" : "test", "db" : "mydb", "credentials" : { "MONGODB-CR" : "c8ef9e7ab00406e84cfa807ec082f59e" }, "roles" : [ { "role" : "readWrite", "db" : "mydb" } ] }解决方式就是删除刚刚创建的用户,重新重建即可:
> db.system.users.remove({user:"test"});> use mydb >db.createUser({user:'test',pwd:'123456',roles:[{role:'readWrite',db:'mydb'}]})然后开启认证,重启服务器,用php连接,一切OK
mydb; /*选择数据库里面的集合stu,相当于表*/ $collection = $db->stu; $array = array('name'=>'melon','age'=>'24','sex'=>'Male','birth'=>array('year'=>'1988','month'=>'07','day'=>'13')); $collection->insert($array); $cursor = $collection->find(); foreach ($cursor as $id => $value) { echo "$id: "; var_dump($value); echo "
"; }感谢各位的阅读!关于"如何解决Mongodb 3.2.9开启用户权限认证问题"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
认证
数据
用户
方式
选择
数据库
权限
问题
内容
更多
篇文章
面的
库里
提示
登录
验证
不错
实用
成功
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网佳科技有限公司
互联网科技卖菜
互联网科技的英文
广州凡科互联网科技
互联网科技logo设计
广西互联网科技公司
互联网 视角下的科技创新
互联网高科技企业
济南和联互联网科技有限公司
互联网实体化科技化
互联网科技中介
互联网科技研发水平
允成互联网科技有限公司融资
爱医互联网络科技
福建互联网展示科技馆设计
互联网高科技行业有哪些企业
银川新华互联网科技学校是国营吗
互联网科技手抄报图片
互联网领先科技活动
平安好医生打造互联网科技医疗
未来的互联网科技
顺玮阁互联网科技
中国互联网金融科技基金
小米互联网科技园设置
武汉健翔互联网络科技有限公司
湖南一路畅行互联网科技
如何创新互联网科技
烟台灵鸽互联网科技有限公司
黑科技 体验场景 互联网大会
10位科技互联网大佬