千家信息网

MongoDB用户管理

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,创建用户语法:db.createUser({user:, #字符串pwd:, #字符串roles:[{role:,db:}] #数组})创建用户:> db.createUser(... {...
千家信息网最后更新 2026年11月02日MongoDB用户管理

创建用户

语法:
db.createUser(
{
user:, #字符串
pwd:, #字符串
roles:[{role:,db:}] #数组
}
)

创建用户:

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

用户验证:

> db.auth("root","admin")1

查看用户:

删除用户

db.dropUser() #删除某个用户,授受字符串参数
db.dropAllUsers() #删除当前库的所有用户

查询所有用户> db.getUsers()[    {        "_id" : "admin.root",        "user" : "root",        "db" : "admin",        "roles" : [            {                "role" : "root",                "db" : "admin"            }        ]    },    {        "_id" : "admin.sysadmin",        "user" : "sysadmin",        "db" : "admin",        "roles" : [            {                "role" : "root",                "db" : "admin"            }        ]    },    {        "_id" : "admin.test",        "user" : "test",        "db" : "admin",        "roles" : [            {                "role" : "root",                "db" : "admin"            }        ]    }]
删除test用户> db.dropUser("test")true
确认test用户是否存在> db.getUser("test")null
删除所有用户> db.dropAllUsers()2

修改用户密码

要修改用户密码,要求用户具有changePassword或changeOwnPassword的权限,有以下两种方式用来修改用户密码:
db.changeUserPassword(,)
db.updateUser(,{update_object})

db.changeUserPassword()示例:

admin@undefined$ db.auth("root","admin")1

admin@undefined$ db.changeUserPassword("root","123456")

admin@undefined$ db.auth("root","admin")Error: Authentication failed.0
admin@undefined$ db.auth("root","123456")1
admin@undefined$ show dbsadmin  0.000GBlocal  0.000GBtest   0.000GBtest1  0.000GB

可以看到在修改root用户的密码后,原来的密码验证就失败了,但是当前这个会话还是可以正常执行操作,新会话则需要用修改后的密码进行验证

db.updateUser()示例:

admin@undefined$ db.auth("root","123456")1

admin@undefined$ db.updateUser("root",{pwd:"admin123"})

admin@undefined$ db.auth("root","admin123")1
admin@undefined$ db.auth("root","123456")Error: Authentication failed.0

修改用户权限(角色):
修改用户角色也是使用db.updateUser()函数来实现的
我们先创建一个测试用户readtest,它只对test库具备读权限:
db.createUser(
{
user:"readtest",
pwd:"123456",
roles:[{role:"read",db:"test"}]
}
)

admin@undefined$ db.auth("readtest","123456")1
admin@undefined$ use testswitched to db test
test@undefined$ show tablesgoodsusers
test@undefined$ db.goods.find(){ "_id" : ObjectId("5a7c5b7e83dba596ccad3ac0"), "sn" : "fhbowhnlerio12o47", "category" : "food" }
test@undefined$ db.goods.insert({"sn":"04t68gjsoe076","category" : "beauty"})WriteResult({    "writeError" : {        "code" : 13,        "errmsg" : "not authorized on test to execute command { insert: \"goods\", documents: [ { _id: ObjectId('5a8ef5aa3cdd503ad3903fcc'), sn: \"04t68gjsoe076\", category: \"beauty\" } ], ordered: true }"    }})

可以看到这个用户可以执行读操作,写操作是没有权限的,现在我们通过db.updateUser()来扩充它的权限,记其具有读写权限。
admin@undefined$ db.updateUser("readtest",{"roles":[{role:"readWrite",db:"test"}]})

admin@undefined$ db.auth("readtest","123456")1
admin@undefined$ use testswitched to db test
test@undefined$ db.goods.insert({"sn":"04t68gjsoe076","category" : "beauty"})WriteResult({ "nInserted" : 1 })

可以看到,当我们把readtest用户的角色从read改成readWrite时,它就具有了对test库的写权限。通过db.updateUser()我们可以实现用户权限的放大和缩小

用户 权限 密码 字符 字符串 角色 验证 示例 函数 参数 数组 方式 语法 还是 新会 查询 测试 管理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技的发展 为想互联网科技 远信互联网科技 互联网科技视频素材 国外互联网科技网站 西藏七维空间互联网科技有限公司 福州新华互联网科技学校 知乎 重庆互联网医院沙龙医盟信息科技 搜狐科技互联网 允成互联网科技有限公司融资 浙南科技城互联网大厦建设工程 东莞新华互联网科技学校 广州百诚互联网科技有限公司官网 美国互联网科技公司 上海创道互联网络科技有限公司 三亚科技创新互联网基地 互联网科技自媒体灵感 科技美学互联网 艺术 恒生科技互联网指数十大成分股 山东亿川互联网科技有限责任公司 杭州互联网科技公司 中国互联网科技发展 互联网科技缩写 上海卓越科技 互联网 本届互联网博览会上的黑科技 迪庆互联网科技招生 如何创新互联网科技 山东子淼互联网科技有限公司 互联网企业科技类企业如何做账 科技互联网专业工作会议发言稿
0