others - 身份验证 - 如何使用用户名和密码保护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 启动服务器之前将用户添加到管理数据库,或者从本地主机接口添加第一个用户。

MongoDB认证

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

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

这个答案适用于 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



下面是添加用户的javascript代码,

使用 --auth = true 启动 mongod

从 mongo shell访问管理数据库,并且传递javascript文件。

mongo管理"Filename.js"

"Filename.js"


//Adding admin user


db.addUser("admin_username"," admin_password");


//Authenticate admin user


db.auth("admin_username"," admin_password");


//use database code from java script


db = db.getSiblingDB("newDatabase");


//Adding newDatabase database user 


db.addUser("database_username"," database_ password");



现在用户添加完成了,我们可以验证从 mongo shell访问数据库,

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

编辑mongo设置文件;


sudo nano/etc/mongod.conf



添加行:


security.authorization : enabled



重新启动服务


sudo service mongod restart



首先在终端上运行 mongoDB

 
mongod



 

现在运行 mongo shell使用以下命令


 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/

为特定数据库创建带有密码的用户以确保数据库访问的安全:


use dbName



db.createUser(


 {


 user:"dbUser",


 pwd:"dbPassword",


 roles: ["readWrite","dbAdmin" ]


 }


)



以下是连接mongoDB的最佳实践:

在初始安装之后

use admin

然后运行下面的脚本来创建管理用户

db.createUser( { user:"YourUserName", pwd:"YourPassword", roles: [ { role:"userAdminAnyDatabase", db:"admin" }, { role:"readWriteAnyDatabase", db:"admin" }, { role:"dbAdminAnyDatabase", db:"admin" }, { role:"clusterAdmin", db:"admin" } ] })

下面的脚本将为数据库创建管理员用户,

使用db.admin登录到

mongo -u YourUserName -p YourPassword admin

登录后,可以使用相同的管理凭据创建N个数据库,或者通过重复1到3来创建不同的数据库,

这样你就可以为在MongoDB中创建的不同集合创建不同的用户和密码,

按以下步骤操作

  • 使用CLI创建用户

use admin


db.createUser(


 {


 user:"admin",


 pwd:"admin123",


 roles: [ { role:"userAdminAnyDatabase", db:"admin" },"readWriteAnyDatabase" ]


 }


)



  • 启用身份验证,你如何根据你的操作系统做不同的事情在使用Windows的情况下,可以简单地编辑/etc/mongod.conf文件以添加 security.authorization :enabled,然后重新启动mongd服务,然后重新启动,
  • 通过cli进行连接 mongo -u"admin" -p"admin123" --authenticationDatabase "admin" 就是这样

你可以通过签出这个文章,并使用mongoose学习与它的连接,

...