mongodb版本号
6.0
前言
- mongoDB刚开始无需密码登录
- mongoDB有3默认数据库,分别为:
- admin 超级用户,能对所有数据库操作,执行管理员命令
- config 分片集群配置的数据库
- local 分片集群锁信息的集合
- test 这个数据库一般是隐式创建的,没有显示出来。若你进入到数据库,默认进入test数据库,若你没有指定数据库,直接添加数据
db.insert({name:'123'})
,会添加到test数据库
角色介绍
一、角色参考
名称 | 角色 |
---|---|
read、readWrite | 数据库用户角色 |
dbAdmin、dbOwner、userAdmin | 数据库管理角色 |
clusterAdmin、clusterManager、clusterMonitor、hostManage | 集群管理角色 |
readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase | 所有数据库角色 |
backup、restore | 备份恢复角 |
root | 超级用户角色 |
__system | 内部角色 |
二、角色作用
名称 | 作用 | 注意 | 备注 |
---|---|---|---|
read | 只读 | 不可对数据库进行操作,只能查询数据 | 无 |
readWrite | 读写 | 可对数据库查询、修改、删除、添加等操作 | 无 |
dbAdmin | 数据库管理 | 可对数据库执行管理函数,如创建索引 | 无 |
userAdmin | 管理数据库用户 | 可创建、删除和管理用户 | 无 |
clusterAdmin | 赋予用户所有分片和复制集相关函数的管理权限 | 无 | 仅admin数据库中可用 |
readAnyDatabase | 赋予用户所有数据库的读权限 | 无 | 仅admin数据库中可用 |
readWriteAnyDatabase | 赋予用户所有数据库的读写权限 | 无 | 仅admin数据库中可用 |
userAdminAnyDatabase | 赋予用户所有数据库的userAdmin权限 | 无 | 仅admin数据库中可用 |
dbAdminAnyDatabase | 赋予用户所有数据库的dbAdmin权限 | 无 | 仅admin数据库中可用 |
dbAdminAnyDatabase | 赋予用户所有数据库的dbAdmin权限 | 无 | 仅admin数据库中可用 |
root | 超级账号,超级权限 | 别的角色管不到的我要管、管到的我也要管 | 仅admin数据库中可用 |
创建角色
- use dbName 进入名为dbName的数据库
- dbName 数据库名称
-
db.createUser({ user,pwd,roles:[{role,db}] }) 创建用户
- user 用户名
- pwd 密码
- roles
- role 分配的角色
- db 管理的数据库
1. 开始创建角色
- 进入admin数据库
- 在admin数据库创建一个超级用户
- 其它数据库只可读
use admin
db.createUser(
{
user: "root",
pwd: "123456",
roles: [
{ role: "root", db: "admin" },
'read'
]
}
)
2. 创建完角色后修改配置(开启权限验证)
开启验证-官方参考
-
备用地址 https://www.mongodb.com/docs/manual/tutorial/configure-scram-client-authentication/#procedure
-
记事本打开: mongodb安装目录 > bin > mongod.cfg
找到 #security: 修改为↓
(注意:第二行空格不要删除,复制粘贴即可)
security:
authorization: enabled
重启mongodb服务
修改后最好重启下mongodb服务↓↓↓↓↓↓
mongodb服重启传送门
mongodb服重启传送门
mongodb服重启传送门
mongodb服重启传送门
3. 使用命令登录角色
- mongosh --port 端口号 --authenticationDatabase “数据库” -u “角色用户名” -p “角色密码”
参考↓↓↓↓↓↓↓↓↓↓↓↓
mongosh --port 27017 --authenticationDatabase "admin" -u "root" -p "123456"
3. 使用第三方工具连接数据库
mongodb://root:123456@127.0.0.1:27017/admin
例如使用compa工具参考图
查看创建的用户
- 3种方式
1 ↓↓↓↓↓↓↓↓↓↓↓
show users
2 ↓↓↓↓↓↓↓↓↓↓↓
db.system.users.find()
3 ↓↓↓↓↓↓↓↓↓↓↓
db.runCommand({usersInfo:"userName"})
修改角色密码
db.changeUserPassword("角色用户名", "修改的密码")
修改密码和用户信息
db.runCommand(
{
updateUser:"角色用户名",
pwd:"输入修改的密码",
customData:{title:"xxx"}
}
)
删除角色
db.dropUser('角色名称')
切换角色
db.auth('角色名称','角色密码')
问题 || mongodb重启
- 创建完角色最好重启下mongoDB服务
- 不重启有时会出问题,比如已创建的角色无法使用某些命令
net stop mongodb
停止mongodb服务net start mongodb
开启mongodb服务
↓
net stop mongodb
net start mongodb
mongodb常用命令
命令 | 作用 | 备注 |
---|---|---|
show dbs | 查看数据库 | 无 |
show collections | 显示当前数据库中的集合 | 无 |
show users | 显示用户 | 无 |
use dbName | 使用名为dbName的数据库 | dbName:数据库名 。空数据库不显示 |
db.getName() | 获取当前数据库的名称 | 无 |
db.help() | mongodb帮助 | 无 |
show tabless | 查看当前数据库的表 | 无 |
db.users.insert({name:‘1’}) | 往名为users的集合插入数据{name:'1'} | users > 集合名称 |
db.users.find() | 查询users集合的数据 | users > 集合名称 |
db.users.drop() | 删除users集合 | users > 集合名称 |
db.dropDatabases() | 删除当前使用的数据库 | 有权限才能删 |
db.help() | mongodb帮助 | 无 |
db.help() | mongodb帮助 | 无 |
$gt | 大于 > | 无 |
$lt | 小于 < | 无 |
$gte | 大于等于 >= | 无 |
$lte | 小于等于 <= | 无 |
$ne | 不等于 noe equals | 无 |
$in | 存在于 | 无 |
$nin | 不存在于 | 无 |
$exists | 是否存在 | 无 |
例
db.collection.find({age:{$gt:18}}) //查看collection表中年龄大于不包含18岁的数据
db.collection.find({field:{$in:array}})
db.collection.find({field:{$nin:array}})
db.collection.find({title:{$exists:true}})//如果记录中有包含title属性的全部返回
db.collection.find({title:{$exists:false}})//如果记录中有包含title属性的全部不返回,不包含title属性的全部返回