mongodb启用auth,使用密码登录

本文介绍了如何在MongoDB中启用身份验证(auth),创建用户并分配不同权限,以及如何使用新创建的用户和密码登录数据库。步骤包括安装MongoDB,启动服务,首次无密码登录,创建具有不同角色的用户,对账号授权,并在重启服务时启用--auth参数以确保安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、安装mongodb。 mongodb安装见:https://blog.youkuaiyun.com/qq_35462323/article/details/116710653

2、安装完成之后,启动mongod服务:

mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork

也可指定配置文件启动。

mongod.conf

#数据文件存放目录
dbpath = /usr/local/var/mongodb
#日志文件存放目录 
logpath = /usr/local/var/log/mongodb/mongo.log
#端口 
port = 27017 
#以守护程序的方式启用,即在后台运行
fork = true 
nohttpinterface = true 
./mongod -f mongodb.conf

3、使用客户端登陆,首次登陆不需要密码。

./mongo

4、创建用户

db.createUser({user:"root",pwd:"root",roles:[{"role":"userAdmin","db":"admin"},{"role":"root","db":"admin"},{"role":"userAdminAnyDatabase","db":"admin"}]})

其中built-role有如下:

Read:允许用户读取指定数据库

readWrite:允许用户读写指定数据库

dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户

clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。

readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限

readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限

userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

root:只在admin数据库中可用。超级账号,超级权限(本次创建的就是超级账号)

5、对账号授权:db.auth(“账号”,”密码”)

6、重启mongo 加上 --auth 参数。--auth参数用来控制用户对数据库资源和操作的访问。启用授权后,MongoDB要求所有客户端首先进行身份验证,以确定客户端的访问权限。

mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork --auth

此时如不使用用户名密码登录,show dbs, 和 show tables 都无权限。

7、使用账号密码登录:

mongo -u root -p root localhost:27017/admin
或者
mongo "mongodb://root:root@localhost:27019/admin"

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值