进入admin数据库
> use admin
创建数据库管理员
(创建管理员数据库的前提条件数当前的mongoDB处于无账号认证状态)
db.createUser({
user:"admin",
pwd:"XXXXX",
roles:[
"readWriteAnyDatabase",
"dbAdminAnyDatabase",
"clusterAdmin" ,
"userAdminAnyDatabase"
]
})
创建普通用户
db.createUser({
user:"pell",
pwd:"XXXXXX",
roles:[
{role:"readWrite",db:"test01"}
{role:"read",db:"test"}
]
})
修改数据库配置文件mongod.conf, 开启账号密码验证 , 然后重启数据库
security:
authorization: enabled
给用户添加新数据库读,读写权限
db.grantRolesToUser(
"XXXX" , [
{ role: "read", db: "test" }
{ role: "readWrite", db: "test01" }
]
)
删除用户在某个数据库中的权限
db.revokeRolesFromUser(
"XXXX" , [
{ role: "readWrite", db: "test" }
]
)
更新用户数据库权限
# updateuser它是完全替换之前的值,如果要新增或添加roles而不是代替它
#则使用方法: db.grantRolesToUser() 和 db.revokeRolesFromUser()
db.updateUser(
"test",
{roles:[
{role:"read",db:"test"},
]
})
查看用户账号权限信息
db.getUser("test") #获取test用户账号信息
db.getUsers() #获取全部账号信息
命令行使用账号密码登陆MongoDB
mongo 127.0.0.1:27018 -u $User -p '$passowd' --authenticationDatabase "admin"
登录不输入账号的方法
mongo 127.0.0.1:27018
use admin
db.auth('user','password')
修改用户密码
db.dropUser('XXXX') // 删除用户
db.changeUserPassword('XXXX','XXXX');
权限解释说明
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 内部角色:__system

image.png
root:只在admin数据库中可用。超级账号,超级权限
集群管理角色:
clusterAdmin: 赋予管理集群的最高权限,只在admin数据库中可用
clusterManager: 赋予管理和监控集群的权限
clusterMonitor: 赋予监控集群的权限,对监控工具具有readonly的权限
hostManager: 赋予管理Server
https://docs.mongodb.com/v3.4/reference/built-in-roles/#built-in-roles
数据库备份
mongodump -h dbhost -d dbname -o dbdirectory --authenticationDatabase admin
mongodump -h 127.0.0.1:27018 -u backup -p pssword -d test -o /mnt/backup/test --authenticationDatabase admin
数据库表导出
mongoexport -h $dbhost --port $port -u $user -p $passowrd --authenticationDatabase="admin" -d dbname -c table -f id,user --type=csv -o ./users.csv #导出csv格式
mongoexport -h $dbhost --port $port -u $user -p $passowrd --authenticationDatabase="admin" -d dbname -c table -f id,user --type=json -o ./users.json #导出json格式
基本信息
>db.serverStatus()
{
"host" :"h6.corp.yongche.org", //主机名
"version" :"2.6.2", //mongodb版本
"process" :"mongod", //mongodb进程,主要有mongod和mongos(分片集群中)两种
"pid" : NumberLong(4205), //mongod的pid进程号,可用shell的pidof mongod命令验证
"uptime" : 173120, //mongod服务启动后到现在已经存活的秒数
"uptimeMillis" :NumberLong(173119573), / /mongod服务启动后到现在已经存活的毫秒数
"uptimeEstimate" : 172173, //mongod内部计算出来的存活秒数
"localTime" :ISODate("2014-12-31T06:41:01.029Z") //本地时间
连接数信息
>db.serverStatus().connections
{
"current" : 2581, //当前连接数
"available" : 48619, //可用连接数
"totalCreated" :NumberLong(187993238) //截止目前为止总共创建的连接数
}
可看到当前mongod的最大连接数即为51200=2581+48619
内存信息
>db.serverStatus().mem
{
"bits" : 64, //操作[系统](http://www.2cto.com/os/)位数
"resident" : 45792, //物理内存消耗,单位M
"virtual" : 326338, //虚拟内存消耗
"supported" : true, //为true表示支持显示额外的内存信息
"mapped" : 161399, //映射内存
"mappedWithJournal" : 322798 //除了映射内存外还包括journal日志消耗的映射内存
}
#参考:https://www.cnblogs.com/SZxiaochun/p/6902531.html