MongoDB基础

进入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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容