我从2.4升级到2.6并且身份验证失败了. 本教程看起来非常简单,但我一直被锁在自己的数据库之外.我的情况非常简单,我有一个Mongo服务器,需要一个用户/密码组合才能连接.
首先,我通过提到的localhost异常进行连接.然后我按照建议创建管理员用户:
use admin db.createUser( { user: "myadmin", pwd: "mysecret", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
现在是时候添加新用户,以便健全地检查自己,我注销了shell.现在,当我键入"mongo"时,它失败了.以前工作但是没问题,它没有看到用户名密码,我猜不再有localhost异常,所以我按照这里列出的说明操作:
mongo --port 27017 -u myadmin -p mysecret --authenticationDatabase admin
我得到:
MongoDB shell version: 2.6.0 connecting to: 127.0.0.1:27017/test Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" } >
任何想法如何:
设置Mongo 2.6所以我可以轻松地进出shell来管理数据库(我认为这是"系统用户管理员")
从远程客户端启用用户连接?(只是mongo方面,iptables无需帮助......)
谢谢!
显然"系统用户管理员"是不够的.创建root用户:
> db.createUser({user:"someadmin",pwd:"secret", roles:[{role:"root",db:"admin"}]})
然后添加您的数据库用户:
> use some_db > db.createUser( { user: "mongouser", pwd: "someothersecret", roles: ["readWrite"] } )
关于这个要点的更多细节.评论关于SO欢迎的要点和更好的答案 - 我不是系统管理员