2.4,2.6,3.0+各mongo版本的用户及权限添加方法
mongo开启用户验证
mongod数据库服务默认是不开启用户认证的,此时任何的client端都可以连接并访问mongo服务,只有是网络可以连通即可。
如果需要支持用户认证的功能,则必须要先主动开启该功能,主要的方式就是在启动命令的时候添加一个--auth参数即可,如下清单
/usr/bin/mongod --config /etc/mongodb.conf --auth
通过上述命令启动的mongo服务就会支持认证机制,client连接时如果没有带上正确的用户名和密码的话则会报错。
mongo的用户存储及权限
mongo的用户分为2类,一类是admin用户,用户信息存储位置为admin数据库的system.users集合,admin用户为super user可以访问所有数据库,只有拥有对应的权限;
另一类是普通数据库的用户,用户信息存储位置为对应数据库下的system.users集合,此类用户只拥有所在数据库的访问权限。
需要注意的点:
1、给mongo创建用户的时候,需要先创建一个admin用户,然后再创建具体数据库的用户。具体的步骤后面会讲到。
2、创建用户前不要使用带--auth参数来启动mongo,需要以非认证模式启动,用户创建成功后再以认证模式启动。
2.4以前版本
~# mongo
MongoDB shell version: 2.3.*
connecting to: test
>
>use admin
>db.addUser("root", "root") ##读写权限
>db.addUser("admin", "admin", true) ##只读权限
>show tables
>db.system.users.find() ##查询super admin用户
>
>use youdb ##切换到具体的业务DB
>db.addUser("user", "user") ##读写权限
>db.addUser("user2", "user2", true) ##只读权限
>show tables
>db.system.users.find() ##查询youdb数据的用户
2.4之后版本
~# mongo
MongoDB shell version: 2.4.*
connecting to: test
>
>use admin
>db.addUser({
user:'root',
pwd:'root',
roles:[
"readWrite", ##admin数据库的读写权限
"dbAdmin", ##admin数据库的管理权限
"userAdmin"], ##admin数据库的用户管理权限
otherDBRoles:{
youdb:[
"readWrite", ##youdb数据库的读写权限
"dbAdmin", ##youdb数据库的管理权限
"userAdmin" ##youdb数据库的用户管理权限
]}
})
>db.addUser({user:'admin',pwd:'admin',roles:["read"]}) ##只读权限
>show tables
>db.system.users.find() ##查询super admin用户
>
>use youdb ##切换到具体的业务DB
>db.addUser({user:'user',pwd:'user',roles:["readWrite"]) ##读写权限
>db.addUser({user:'user2',pwd:'user2',roles:["read"]) ##只读权限
>show tables
>db.system.users.find() ##查询youdb数据的用户
2.6之后版本
~# mongo
MongoDB shell version: 2.6.*
connecting to: test
>
>use admin
>db.addUser({
user:'root',
pwd:'root',
roles:[
{
role:"dbAdminAnyDatabase",
db:"admin"
},
{
role:"userAdminAnyDatabase",##任意数据库的用户管理权限
db:"admin"
},
{
role:"userAdmin",##youdb数据库的用户管理权限
db:"youdb"
},
{
role:"readWrite",##youdb数据库的读写权限
db:"youdb"
}]
})
>show tables
>db.system.users.find() ##查询super admin用户
>
>use youdb ##切换到具体的业务DB
>db.addUser({
user:'user',
pwd:'user',
roles:[
{
role:"read",##youdb数据库的只读权限
db:"youdb"
},{
role:"readWrite",##youdb数据库的读写权限
db:"youdb"
}]
})
>show tables
>db.system.users.find() ##查询youdb数据的用户
3.0之后版本
~# mongo
MongoDB shell version: 3.2.*
connecting to: test
>
>use admin
>db.createUser({
user:'root',
pwd:'root',
roles:[
{
role:"dbAdminAnyDatabase",
db:"admin"
},
{
role:"readWriteAnyDatabase",##任意数据库的读写权限
db:"admin"
},
{
role:"userAdmin",##youdb数据库的用户管理权限
db:"youdb"
},
{
role:"readWrite",##youdb数据库的读写权限
db:"youdb"
}]
})
>show tables
>db.system.users.find() ##查询super admin用户
>
>use youdb ##切换到具体的业务DB
>db.addUser({
user:'user',
pwd:'user',
roles:[
{
role:"read",##youdb数据库的只读权限
db:"youdb"
},{
role:"readWrite",##youdb数据库的读写权限
db:"youdb"
}]
})
>show tables
>db.system.users.find() ##查询youdb数据的用户
mongo用户认证登录
~# mongo
MongoDB shell version: 2.4.9
connecting to: test
>
>use admin
>db.auth('root', 'root')
>show dbs
~# mongo
MongoDB shell version: 2.4.9
connecting to: test
>
>use youdb
>db.auth('user', 'user')
>show dbs
————————————————
版权声明:本文为CSDN博主「上帝De助手」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/five3/article/details/54632932
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?