如何用用户名和密码保护MongoDB

我想为我的MongoDB实例设置用户名和密码认证,以便任何远程访问都会询问用户名和密码。 我尝试了MongoDB网站的教程,并做了以下操作:

use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');

之后,我退出并再次运行了mongo。 我不需要密码来访问它。 即使我远程连接到数据库,我也不会提示输入用户名和密码。


更新这里是我最终使用的解决方案

1) At the mongo command line, set the administrator:

    use admin;
    db.addUser('admin','123456');

2) Shutdown the server and exit

    db.shutdownServer();
    exit

3) Restart mongod with --auth

  $ sudo ./mongodb/bin/mongod --auth --dbpath /mnt/db/

4) Run mongo again in 2 ways:

   i) run mongo first then login:

        $ ./mongodb/bin/mongo localhost:27017
        use admin
        db.auth('admin','123456');

  ii) run & login to mongo in command line.

        $ ./mongodb/bin/mongo localhost:27017/admin -u admin -p 123456

用户名和密码的工作方式与mongodumpmongoexport相同。


您需要在设置用户后使用--auth选项启动mongod

来自MongoDB站点:

使用--auth选项运行数据库(mongod进程)以启用安全性。 您必须在使用--auth启动服务器之前将用户添加到管理数据库,或者从localhost接口添加第一个用户。

MongoDB身份验证


首先,在mongod配置文件(默认路径/etc/mongo.conf )中取消注释以/etc/mongo.conf #auth=true开头的行。 这将启用mongodb的身份验证。

然后,重新启动mongodb: sudo service mongod restart


这个答案适用于Mongo 3.2.1 Reference

1号航站楼:

$ mongod --auth

2号航站楼:

db.createUser({user:"admin_name", pwd:"1234",roles:["readWrite","dbAdmin"]})

如果你想添加没有角色(可选):

db.createUser({user:"admin_name", pwd:"1234", roles:[]})

检查是否验证:

db.auth("admin_name", "1234")

它应该给你:

1

其他:

Error: Authentication failed.
0
链接地址: http://www.djcxy.com/p/36077.html

上一篇: How to secure MongoDB with username and password

下一篇: Check username / password