首页 > 代码库 > MongoDB 入门之基础 DCL
MongoDB 入门之基础 DCL
此文章主要记录部分主要的 MongoDB 的 DCL 操作。
MongoDB 默认不需要用户名和密码就可以用 mongodb.exe 登录
一、开启 MonogoDB 的权限模式
修改 MongoDB 服务的注册语句,修改加入 --auth 参数,详情见MongoDB 入门之安装篇
"$MONGODB_HOME\bin\mongod.exe" --config "$MONGODB_HOME\mongo.cfg" --install --auth
C:\Windows\System32\sc.exe create MongoDB binPath= "\"$MONGODB_HOME\bin\mongod.exe\" --service --auth --config=\"$MONGODB_HOME\mongo.cfg\"" DisplayName= "MongoDB 2.6 Standard" start= "auto"
或者在mongod.cfg 中添加配置
auth=true
二、用户权限管理
- 创建用户
> db.addUser("user","abc123_")WARNING: The ‘addUser‘ shell helper is DEPRECATED. Please use ‘createUser‘ insteadSuccessfully added user: { "user" : "user", "roles" : [ "dbOwner" ] }>
可以看到当执行 addUser 命令是出现 wraning,虽然创建成功了,但是 MongoDB 建议使用 createUser。
> db.createUser({... user:"user",... pwd:"abc123_",... roles:[... {... role:"dbOwner",... db:"mydb"... }... ]... })Successfully added user: { "user" : "user", "roles" : [ { "role" : "dbOwner", "db" : "mydb" } ]}>
如果 MongoDB 开启了权限模式,并且某一个数据库没有任何用户时,在不验证权限的情况下,可以创建一个用户,当继续创建第二个用户时,会返回错误,若想继续创建用户则必须登录。
2014-10-16T10:40:41.904+0800 Error: couldn‘t add user: not authorized on mydb to execute command { createUser: "test", pwd: "xxx", roles: [ { role: "dbOwner", db: "mydb" } ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 30000.0 } } at src/mongo/shell/db.js:1004>
创建超级管理员
创建超级管理员需要未开启权限模式的情况下执行。如果已开启权限而在 admin 下创建超级管理员,会出现如下错误> db.createUser({... user:"admin",... pwd:"admin",... roles:[... {... role:"userAdminAnyDatabase",... db:"admin"... }... ]... })2014-10-16T10:48:01.223+0800 Error: couldn‘t add user: not authorized on admin to execute command { createUser: "admin", pwd: "xxx", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 30000.0 } } at src/mongo/shell/db.js:1004>
关闭权限模式创建超级管理员
> use adminswitched to db admin> db.createUser({... user:"admin",... pwd:"admin",... roles:[... {... role:"userAdminAnyDatabase",... db:"admin"... }... ]... })Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ]}>
如果使用 addUser 创建超级管理员还必须切换到 admin 数据库。
- 删除用户
> db.dropUser("user")true>
- 登录
anth 需要登录用户有该数据库的权限> use mydbswitched to db mydb> db.auth("user","abc123_")1>
MongoDB 入门之基础 DCL
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。