36人参与 • 2026-04-16 • mongodb
read、readwritedbadmin、dbowner、useradminclusteradmin、clustermanager、clustermonitor、hostmanagerbackup、restorereadanydatabase、readwriteanydatabase、useradminanydatabase、dbadminanydatabaseroot授权常见的模式分两种:
test为例,use test,然后进行相关的授权grantrolestouser。新创建用户时,以rsq用户为例,需要在test数据库中进行用户的创建,注意rsq跟其它数据库的用户不通用,如果需要在test2数据库中给rsq用户授权,则需要在test2中也创建rsq用户。此时mongo连接串需要指定相对应的数据库才可以登录,否则会报认证失败。admin数据库中,先对用户进行admin数据库的权限授权,如dbadmin,授权完再给普通数据库授权,这种情况不需要再进入到普通数据库创建用户,用户是全局生效的。此时mongo连接串不需要指定具体的数据库名称也可以登录连接串:mongodb://test:xxxxx@mongo.rsq.cn:27017/?tls=false&authsource=test1
# 新建数据库
use test1
# 新建一个测试collection
# 默认一个db中没有collection,show dbs是看不到这个数据库的
db.site.insert({"name":"test1"})
# 查看数据库
show dbs
# 给新数据库创建用户,密码跟之前保持一致
db.createuser({user: "test",pwd: "xxxxx",roles: [ { role: "dbowner", db: "test1" } ]})
# 如果需要角色授权,则有如下命令
db.runcommand(
{
grantrolestouser: "test",
roles:
[
{ role: "dbadminanydatabase", db: "admin" }
]
}
)
连接串:mongodb://test:xxxxx@mongo.rsq.cn:27017/?tls=false
# 需要进入到admin数据库授权多个数据库给同一个用户
use admin
# 创建用户
db.createuser({
user: "test",
pwd: "xxxxx",
roles: [
{
role: "dbadmin", db: "admin"
},
{
role: "dbowner", db: "test1"
},
{
role: "dbowner", db: "test2"
},
{
role: "dbowner", db: "test3"
}
]
})
# 查看db相关权限
db.runcommand(
{
rolesinfo: { role: "readwrite", db: "" },
showprivileges: true
}
)
# 查询用户
db.getusers();
show users
# 删除用户
db.dropuser('admin')
# 修改用户密码
db.updateuser('admin', {pwd: '111111'})
# 创建管理员用户,需要使用admin数据库
use admin
db.createuser({user: "test",pwd: "xxxxx",roles: [ { role: "dbadmin", db: "test" } ]})
# 回收用户角色
db.revokerolesfromuser(
"test",
[
{ role: "root", db: "admin" }
]
)
# 删除数据库
use percepai-cowa3d-corolla-v56tion
db.dropdatabase()
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论