MongoDB 用户、角色和认证
创建数据库
查看所有数据库
show dbs
mongodb是没有创建数据库的命令的,一般是这么做:
# 使用 use 命令切换到 myTest 数据库,若没有系统会自动创建
# 如果我们什么也不干,数据库会被系统回收掉
> use myTest
# 创建一个集合,并创建数据
> db.myuser.insert({"name":"test", age:24})
# 上面这条命令我们并没有显式创建集合 myuser
# mongodb 会自动帮我们创建。
# 这样数据库和一个集合(类似于表的概念)我们就创建好了
用户管理
https://docs.mongodb.com/manual/reference/method/js-user-management/
创建用户
use admin
db.createUser(
{
user: 'admin',
customData:{description:"superuser"}, // 描述,非必需
pwd: 'password',
roles: [ { role: 'userAdminAnyDatabase', db: 'admin' } ]
}
);
修改用户密码
> use admin
switched to db admin
> db.auth("admin", "password")
1
> db.changeUserPassword("admin", "123456")
删除用户
# 从当前数据库中删除指定用户
> db.dropUser("admin2")
true
# 从当前数据库中删除所有用户。
db.dropAllUsers( {w: "majority", wtimeout: 5000} )
修改用户权限
# 为用户授予其他角色。追加权限。
db.grantRolesToUser( "admin", [ { role: "readWrite", db: "my" } ] )
替换用户权限
# 语法
db.updateUser(
"<username>",
{
customData : { <any information> },
roles : [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
pwd: "<cleartext password>",
authenticationRestrictions: [
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>", | "<CIDR range>", ...]
},
...
],
mechanisms: [ "<SCRAM-SHA-1|SCRAM-SHA-256>", ... ], # New in version 4.0
passwordDigestor: "<server|client>" # New in version 4.0
},
writeConcern: { <write concern> }
)
# 示例
db.updateUser( "appClient01",
{
customData : { employeeId : "0x3039" },
roles : [
{ role : "read", db : "assets" }
]
} )
删除权限
# { role: "readWrite", db: "my" } 删除其他数据库的角色
# "readWrite" 删除当前数据库的角色
db.revokeRolesFromUser( "admin",
[ { role: "readWrite", db: "my" }, "readWrite" ],
{ w: "majority" }
)
查看用户
> db.getUser("admin")
{
"_id" : "admin.admin",
"userId" : UUID("dae54e25-4636-4968-95bf-e83971220178"),
"user" : "admin",
"db" : "admin",
"roles" : [
{
"role" : "readWrite",
"db" : "my"
},
{
"role" : "readWrite",
"db" : "readWriteAnyDatabase"
},
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
查看所有用户
> db.getUsers({ filter: { mechanisms: "SCRAM-SHA-256" } })
[
{
"_id" : "admin.admin",
"userId" : UUID("dae54e25-4636-4968-95bf-e83971220178"),
...
}
]
show users
# 或者
db.system.users.find()
角色
角色管理介绍:https://docs.mongodb.com/manual/reference/method/js-role-management/
Built-In Roles(内置角色):https://docs.mongodb.com/manual/reference/built-in-roles/index.html
- 数据库用户角色:read、readWrite;
- 数据库管理角色:dbAdmin、dbOwner、userAdmin;
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
- 备份恢复角色:backup、restore;
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) - 内部角色:__system
- read:允许用户读取指定数据库
- readWrite:允许用户读写指定数据库
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问 system.profile
- userAdmin:允许用户向 system.users 集合写入,可以找指定数据库里创建、删除和管理用户
- clusterAdmin:只在 admin 数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
- readAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读权限
- readWriteAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读写权限
- userAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 userAdmin 权限
- dbAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 dbAdmin 权限。
- root:只在 admin 数据库中可用。超级账号,超级权限
认证
修改配置文件/usr/local/mongodb/bin/mongodb.conf,增加一行 auth = true
Windows 下 修改 C:\Program Files\MongoDB\Server\4.0\bin\mongod.cfg
文件,添加
# https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization
security:
authorization: enabled
配置文件说明:https://docs.mongodb.com/manual/reference/configuration-options/
使用用户名密码登录
C:\Program Files\MongoDB\Server\4.0\bin>mongo
MongoDB shell version v4.0.9
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("388b9f73-24e0-4bec-b2fd-96b957449be7") }
MongoDB server version: 4.0.9
> use admin
switched to db admin
> db.auth("admin", "123456")
1
或者
mongo localhost:27017/admin --authenticationDatabase admin -u admin -p 123456
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 bin07280@qq.com
文章标题:MongoDB 用户、角色和认证
文章字数:1.1k
本文作者:Bin
发布时间:2019-05-28, 13:56:42
最后更新:2019-08-06, 00:07:35
原始链接:http://coolview.github.io/2019/05/28/MongoDB/MongoDB%20%E7%94%A8%E6%88%B7%E3%80%81%E8%A7%92%E8%89%B2%E5%92%8C%E8%AE%A4%E8%AF%81/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。