mongodb之用户/认证/角色/权限管理


一、安装

1.下载解压

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.6.tgz

tar -zxvf mongodb-linux-x86_64-rhel70-4.2.6.tgz  -C /usr/local/mongodb

或 yum install mongodb -y

3.新建目录

mkdir /var/log/mongodb

mkdir /home/mongo/data

mkdir /var/run/mongodb

4.增加配置文件内容

vi /etc/mongod.conf
  dbPath: /home/mongo/data
  bindIp: 0.0.0.0

启动:
mongod --dbpath=/home/mongo/data --logpath=/var/log/mongodb/mongod.log --logappend --port=27017 --fork --auth

停止:
mongod --shutdown --config /etc/mongod.conf  或登陆后操作:db.shutdownServer();

登录:

mongo --port 27017 -u "username" -p "url编码" --authenticationDatabase "admin"

启动报错:
mongodb出现启动失败 child process failed, exited with 1 To see additional information in this output
解决方式:

i. 检查创建的mongod.conf文件中两个path指向路径跟创建路径名是否一致。
ii.进入到数据存储路径,将该 “xxx.lock 文件” mongod.lock删除掉就好。

二、内置角色
1.数据库用户角色:read、readWrite
2.数据库管理角色:dbAdmin、dbOwner、userAdmin
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
4.备份恢复角色:backup、restore
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6.超级用户角色:root
7.内部角色:__system

三、用户管理

查看用户信息
use admin
db.getUser("username")
1.添加用户,切换到需要添加用户的db
use xxxx
执行添加
db.addUser(
    {
        user:"username",
        pwd:"password_url编码",
        roles:[
            {role:"read", db:"xxxx"},
            {role:"readWrite", db:"test"}
        ]
    }
)

添加超级用户,切换到admin数据库
use admin
执行添加
db.addUser(
    {
        user:"username",
        pwd:"password_url编码",
        roles:[
            {role:"root", db:"admin"},
            {role:"dbAdminAnyDatabase",db:"admin"}
        ]
    }
)

2.删除用户,切换到用户授权的db
use xx
执行删除操作
db.dropUser("username") 或者:db.system.users.remove({user:"test"})

3.更新用户
切换到用户授权的db
use xx
执行更新,字段会覆盖原来的内容
db.updateUser("username",{
    pwd:"new password_url编码",
    customData:{
        "title":"PHP developer"
    }
})

更新用户密码
use xx
db.changeUserPassword("username","newpassword_url编码")

删除用户角色
use xx
db.revokeRolesFromUser(
    "usename",
    [
      { role: "readWrite", db: "accounts" }
    ]
)  

添加用户角色
use xx
db.grantRolesToUser(
    "reportsUser",
    [
      { role: "root", db: "admin" }
    ]
)

四、基本操作

查看帮助:db.help() 查询数据库:show dbs
创建数据库:use dbName
查看表:show tables;
插入数据:db.<tableName>.insert();
如:db.members.insert({name:"Michael",age:18,...});
查询:db.<tableName>.find();   或  db.system.users.find();  或  show users;
修改:如:db.members.update({name:"Michael"},{$set:{age:20}});
删除表中的数据:如:db.members.remove({name:"Michael"});
删除全部:db.members.remove({});
删除表:db.members.drop();
删除数据库:db.dropDatabase();

五,角色管理

查看角色信息
use admin
db.getRole("rolename",{showPrivileges:true})

六,备份和恢复

#备份
mongodump -h ip:端口 -uroot -p密码 -d 数据库 -o 路径 #备份数据库
mongodump -uroot -p密码 -d 数据库 -c 集合名 -o 路径 #备份数据库某个集合
mongorestore -h ip:端口 -u用户名 -p密码 -d 数据库 --drop --dir /路径/数据库名/

#加密后备份
mongodump -h ip:端口-uroot -p密码 -d 数据库 --authenticationDatabase admin -o 路径
mongodump -uroot -p密码 -d 数据库 -c 集合名 --authenticationDatabase admin -o 路径

mongorestore -uroot -p密码 -d 数据库 --authenticationDatabase admin --drop --dir /路径/数据库名/