2014-04-11 26 views
13

我从2.4升级到2.6,认证中断。 This tutorial看起来很简单,但我一直被锁定在我自己的数据库之外。我的情况非常简单,我有一个Mongo服务器,需要一个用户/密码组合来连接。如何在2.6中将管理用户添加到Mongo中?

首先我通过本地主机异常连接提到。然后,我创建的管理员用户的建议:

use admin 
db.createUser(
    { 
    user: "myadmin", 
    pwd: "mysecret", 
    roles: 
    [ 
     { 
     role: "userAdminAnyDatabase", 
     db: "admin" 
     } 
    ] 
    } 
) 

现在是时候添加新用户,以便于合理性检查自己,我退出了壳。现在当我输入“mongo”时失败。这用来工作而行,它没有看到一个用户名密码,我想本地主机的例外是不存在了,所以我跟着列出here说明:

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" } 
> 

如何任何想法:

  1. 设置蒙戈2.6,所以我可以很容易地进出外壳管理数据库(我认为这是“系统用户管理员”)

  2. 从远程客户端启用用户连接? (只是mongo方面,iptables不需要帮助...)

谢谢!

+1

我有这个相同的问题......超级沮丧,即使你仔细按照教程,它会失败。 MongoDB需要认真关注其文档。 – inorganik

回答

29

显然“系统用户管理员”是不够的。在this gist

> use some_db 
> db.createUser(
    { 
     user: "mongouser", 
     pwd: "someothersecret", 
     roles: ["readWrite"] 
    } 
) 

更多细节:创建一个root用户:

> db.createUser({user:"someadmin",pwd:"secret", roles:[{role:"root",db:"admin"}]}) 

添加您的数据库用户。关于SO的要点和更好的答案的评论 - 我不是系统管理员

+1

如果你不需要'root'的极端一切,'userAdmin'角色应该也能工作。 http://docs.mongodb.org/manual/reference/built-in-roles/#userAdmin – twiz

1

1)您分配admin user-userAdminAnyDatabase的角色 - 没有无限制特权。这只是一个允许在任何数据库上创建和管理用户的角色。显然,默认情况下,它受限于执行某些与管理数据库用户无关的命令(例如从日志中获取启动警告,查询服务器状态等)。

您可以像托尼建议的那样使用“根”角色。如果您打算使用root帐户进行设置和管理,然后只有几个基本的读/写特权帐户与数据库交谈,这可能是最有意义的。

2)通常,连接客户端只需要在连接客户端代码后调用db.authenticate()函数即可。根据您用于客户端的驱动程序/语言,有多种不同的方法来完成此操作。节点。JS驱动程序代码是非常典型的:我得到一个

`com.mongodb.CommandFailureException:` 

在BuildConfig.groovy的依赖小节添加

compile 'org.mongodb:mongo-java-driver:2.13.1' 

但是解决了该问题http://mongodb.github.io/node-mongodb-native/api-generated/db.html#authenticate

0

即使以下@托尼的方法之后。

相关问题