我想为我的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

用户名和密码将以同样的方式工作在mongodb和mongoexport。


当前回答

一些答案是在使用——auth命令行标志或设置配置文件属性之间发送混合信号。

security:
  authorization: enabled

我愿澄清这方面的问题。首先,在这两种情况下,身份验证凭证(即用户/密码)都必须通过执行db来创建。默认admin数据库上的createUser查询。一旦获得凭据,有两种方式来启用身份验证:

没有自定义配置文件:这是适用于前一个身份验证标志。启动mongod: usr/bin/mongod——auth 使用自定义配置文件:这是指后一种配置必须出现在自定义配置文件中。启动mongod: usr/bin/mongod——config <配置文件路径>

通过认证连接到mongo shell: mongodb -u <user> -p <password>——authenticationDatabase admin

——authenticationDatabase这里是创建用户的数据库名称。所有其他mongo命令,如mongorestore, mongodump接受额外的选项即-u <user> -p <password>——authenticationDatabase admin

详情请参阅https://docs.mongodb.com/manual/tutorial/enable-authentication/。

其他回答

Mongodb 4.4.13社区

1. 创建数据库用户

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

1.2验证工作

> db.auth('myUserAdmin','abc123')

< { ok: 1 }

如果失败了

> db.auth('myUserAdmin','amongus')

MongoServerError: Authentication failed.

2. 修改/etc/mongod.conf

nano /etc/mongod.conf

变化:

#security:

to:

security:
  authorization: enabled

3.重启mongod service

sudo service mongod restart

这对我来说很管用。

首先在终端上运行mongoDB

mongod

现在运行mongo shell use下面的命令

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

重新启动带有访问控制的MongoDB实例。

mongod --auth

现在从命令行使用验证自己

mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

我读过

https://docs.mongodb.com/manual/tutorial/enable-authentication/

https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization

编辑mongo设置文件;

sudo nano /etc/mongod.conf

加一行:

security.authorization : enabled

重新启动服务

sudo service mongod restart

问候

这些步骤对我很有效:

write mongod --port 27017 on cmd then connect to mongo shell : mongo --port 27017 create the user admin : use admin db.createUser( { user: "myUserAdmin", pwd: "abc123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) disconnect mongo shell restart the mongodb : mongod --auth --port 27017 start mongo shell : mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin" To authenticate after connecting, Connect the mongo shell to the mongod: mongo --port 27017 switch to the authentication database : use admin db.auth("myUserAdmin", "abc123"

这个答案是针对Mongo 3.2.1的 参考

终端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