2013-04-30 71 views
8

我的生产环境中,我的MongoDB是启动和运行人员和数据库管理员要求我们改变我们使用身份验证的密码。这样做的一种方法是在change passwordMongoDB中更改密码为现有用户

> db.auth("app_user", "somepassword") 
db.addUser("app_user", "new password") 

描述这是一样好添加新用户再次使用新密码运行adduser命令。

我知道我必须用--auth选项重新启动mongod,一旦我按照in的描述添加新用户,但由于这是生产环境,我无法重新启动服务器。有没有其他的选择?或者,如果我的做法是错误的如何在MongoDB中

+0

如果您从无身份验证转为授权,则只需重新启动 - 您无需重新启动。 – 2013-04-30 15:13:30

+0

显然你还需要重新启动时添加/更新用户到非认证mongod(是的,它仍然可以在特定的数据库上对用户进行认证) – Benoit 2016-11-25 15:13:11

回答

1

更改密码,您链接到一个问题询问添加安全认证功能的MongoDB其中包括启动“的mongod”与选项--auth。由于您已经使用--auth运行,因此在您的方案中重新启动不是必需的。

只需更改用户密码,你会被订走。

+1

感谢Asya,但它是更改密码的唯一方法吗? “adduser”有点误导。 – 2013-05-02 03:31:51

+1

我同意它不是最好的命令名称,但addUser会创建用户,如果他们不存在或更改他们的密码,如果他们确实存在。 – 2013-05-02 16:02:31

+0

从2.4开始,这似乎不再适用了'JavaScript执行失败:用户已经存在该用户名/ userSource组合' – UpTheCreek 2013-05-07 06:32:00

0

如果你已经改变了安全设置10配置文件,您将无法更改密码。要做到这一点,设置authorizationdisabled

停止mongod服务:

$ sudo service mongod stop 

打开Mongo配置文件(路径可能不同系统上):

Linux的

配置文件路径: “/etc/mongod.conf”

的Windows

配置文件路径:“C:\ Program Files文件\ MongoDB的\服务器\ 3.6 \ mongod的。CFG”

查找authorization并将其设置为disabled

security: 
    authorization: enabled 

变化:

security: 
    authorization: disabled 

现在开始Mongo服务:

$ sudo service mongod start 

,并从内部改变密码Mongo壳:

> use mydb 
> db.updateUser("myUser", {pwd: "myNewPassword" }) 

现在你可以设置authorization回那是什么。只需停止Mongo服务,更改设置并启动服务。