ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 一 用户管理 **注意:** mongodb有一个`验证库`的概念,建立用户时必须先use到的某个库, 而这个库,就是该用户的验证库,在使用用户时,要加上验证库才能登陆。 对于管理员用户,必须在admin库下创建. ### A 语法规则 mongodb默认未创建任何用户,所以初次安装好mongodb后,配置文件中不能开启验证功能,否则没法登陆. 在创建好管理员用户后,再到配置文件中开启认配置并重启mongodb后,才能正常使用认证功能 **基本语法:** ```sh db.createUser { user: "<name>", pwd: "<cleartext password>", customData: { <any information> }, roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ] } ``` **createUser字段介绍:** * user字段,为新用户的名字; * pwd字段,用户的密码; * cusomData字段,为任意内容,例如可以为用户全名介绍,可省略; * roles字段,指定用户的角色 * 可以用一个空数组给新用户设定空角色 * 可以指定内置角色和用户定义的角色 * 常用role:root,readWrite,read [内置角色介绍:](https://docs.mongodb.com/v3.2/reference/built-in-roles/) 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 ` ## 二 管理员账号 ### A 创建 admin管理员 ``` use admin db.createUser({ user: "root", pwd: "root123", roles: [ { role: "root", db: "admin" } ] }) ``` 验证测试 ``` > db.auth('root','root123') 1 ``` ### B 配置文件开启认证 配置文件`mongodb.conf`中,加入以下配置 ``` security: authorization: enabled ``` **重启mongodb** ```sh mongod -f /opt/mongodb/conf/mongo.conf --shutdown mongod -f /opt/mongodb/conf/mongo.conf ``` ### C 登录验证 * 方法一:登录时加认证信息 这种方式需要指定验证库 ```sh mongo -uroot -proot123 admin mongo -uroot -proot123 10.0.0.51/admin #登录远程服务器方法 ``` * 方法二:登录后再验证 需要吓你use到账号的验证库中 ```sh mongo use admin db.auth('root','root123') ```# ### D 查看用户 ```sh > use admin > db.system.users.find().pretty() { "_id" : "admin.root", "user" : "root", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "EwrJYzjZts2/FXXcHV0buA==", "storedKey" : "zY0zkNQgBOeSmE1unpFCbnDtyDE=", "serverKey" : "bthrv5ACb1k7aE/UKnC3uzco4vY=" } }, "roles" : [ { "role" : "root", "db" : "admin" } ] } ``` ## 三 普通用户账号 1. 超级管理员用户登陆 ```sh mongo -uroot -proot123 admin ``` 2. 选择一个验证库创建用户 ```sh use app db.createUser( { user: "app01", pwd: "app01", roles: [ { role: "readWrite" , db: "app" } ] } ) ``` 3. 使用该用户登录 ``` mongo -uapp01 -papp01 app db.system.users.find().pretty() ``` ## 四 账号删除 需要以root身份登录,然后use到该用户的验证库) ```sh mongo -uroot -proot123 10.0.0.51/admin use app db.dropUser("app01") ```