MongoDB 3.2 用户角色配置
来源:互联网 发布:检测电脑温度软件 编辑:程序博客网 时间:2024/05/01 07:16
<span style="font-family: 'Microsoft YaHei'; background-color: rgb(255, 255, 255);">MongoDB 3.2 配置 用户认证 和 角色总结</span>
1安装 MongoDB 3.2
官网上详细的流程走走就ok
https://docs.mongodb.com/master/tutorial/install-mongodb-on-ubuntu
2MongoDB 如果不配置登陆的情况是等于游客也是超级管理员的,但默认不支持外链接的
3基本的角色
userAdminAnyDatabase 这个角色拥有分配角色和用户的权限,但没有查写的缺陷
root 这是超级管理员
readWrite 有读写权限
read 有读权限
root@iZ28ec5minyZ:~# mongoMongoDB shell version: 3.2.6connecting to: testServer has startup warnings: 2016-06-04T18:43:48.721+0800 I CONTROL [initandlisten] 2016-06-04T18:43:48.722+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.2016-06-04T18:43:48.722+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'2016-06-04T18:43:48.722+0800 I CONTROL [initandlisten] 2016-06-04T18:43:48.722+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.2016-06-04T18:43:48.722+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'2016-06-04T18:43:48.722+0800 I CONTROL [initandlisten] > show dbslocal 0.000GB>
默认mongo 进入的 是 test ,执行 show dbs ,查看所有数据库 我这新安装的就 一个 local db
现在新建一个数据库 admin 用来保存 新建的userAdminAnyDatabase角色 用户(这个相当于人事部长啊)
> use adminswitched to db admin> dbadmin
有一个要注意的是我在那个数据库创建的用户就保存在哪个数据库,像我现在在 db 输出 admin,那我的用户就保存在admin 数据库。
创建人事部管理员 master
> db.createUser({user:"master",pwd:"123456",roles:[{"role":"userAdminAnyDatabase","db":"admin"}]})Successfully added user: { "user" : "master", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ]}> show dbsadmin 0.000GBlocal 0.000GB>
4配置mongodb
配置前先关闭mongodb
执行 service mongod stop (ubuntu 等系统) 没有service 的系统如(Mac)执行 killall mongod
进入配置文件
(ubuntu 为例子) vi /etc/mongod.conf
修改 bindIp : 0.0.0.0
允许所有IP链接,外链
5 认证模式开启
mongod -f /etc/mongod.conf --fork --auth
-f 是使用的配置文件 (--config)也可以
-fork 是 后台服务运行
-auth 必须认证才能操作
6登陆到mongodb
root@iZ28ec5minyZ:/var/lib# mongoMongoDB shell version: 3.2.6connecting to: test> show dbs2016-06-04T20:29:20.205+0800 E QUERY [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }", "code" : 13} :_getErrorWithCode@src/mongo/shell/utils.js:25:13Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1shellHelper.show@src/mongo/shell/utils.js:760:19shellHelper@src/mongo/shell/utils.js:650:15@(shellhelp2):1:1>
现在没有权限了执行任何操作了,当然你能进入 终端
登陆
> use adminswitched to db admin> db.auth("master","123456")1>
这里面要注意的是你在那注册用户的要去那个db里认证,就像我是testdb数据库createUser的,那我先要use testdb
在去db.auth("userName","password")
现在去创建用户了
> db.auth("master","123456")1> db.createUser({user:"jimb55",pwd:"123456",roles:[{"role":"readWrite","db":"jimb55db"}]})Successfully added user: { "user" : "jimb55", "roles" : [ { "role" : "readWrite", "db" : "jimb55db" } ]}>jimb55db 是我之前创建的一个db,现在我用master给这个db新建了用户jimb55 role是 readWrite(读写权限)
db 作用的表(这个不是保存用户和用户认证的表,当前的表时admin,jimb55被保存到admin,下次登陆也是在admin登陆,当然你可以 use jimb55db 转换到 jimb55db 后再运行db.createUser({...}) ,那么下次就可以再jimb55db登陆也没问题)
现在创建成功,看看有认证看看
exit 退出终端 再次 mongo 进入终端
> use jimb55dbswitched to db jimb55db> db.auth("jimb55","123456")Error: Authentication failed.0> use adminswitched to db admin> db.auth("jimb55","123456")1
看,你在jimb55db 认证失败了吧
现在看看对 jimb55db 的读写操作
> use jimb55dbswitched to db jimb55db> dbjimb55db> db.jimb55test.find(){ "_id" : ObjectId("5752cb4cba5ab543f74727a5"), "name" : "jimb55" }> db.jimb55test.insert({name:"jimb55 bTyh"})WriteResult({ "nInserted" : 1 })> db.jimb55test.find(){ "_id" : ObjectId("5752cb4cba5ab543f74727a5"), "name" : "jimb55" }{ "_id" : ObjectId("5752cdea305e84a053d6cc83"), "name" : "jimb55 bTyh" }>
没有问题了吧。当然我们要做到像mysql那样远程链接操作并且有个可视化的界面
我现在用的是 robomongo,随便百度一下下载一个
但填写资料后发现认证失败,要注意的是 robomongo 等认证不过,那是mongodb 版本错了,这里要执行命令校正mongodb、版本
先退出 mongod 服务
killall mongod
再在无认证情况下打开 mongod
mongod -f /etc/mongod.conf --fork
进入终端:mongo
> use adminswitched to db admin> db.dropUser("jimb55")true> db.system.version.update({ "_id" : "authSchema"},{$set: {"currentVersion" : 3} }) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.createUser({user:"jimb55",pwd:"123456",roles:[{"role":"readWrite","db":"jimb55db"}]})Successfully added user: { "user" : "jimb55", "roles" : [ { "role" : "readWrite", "db" : "jimb55db" } ]}>换成版本3了,进入admin 删除用户,更改版本version号码,再重新创建用户
退出mongo ,killall mongod ,再在认证模式打开mongod
mongod -f /etc/mongod.conf --fork --auth
现在再进入 robomongodb 看看
参考资料:http://liyanjie918.blog.163.com/blog/static/2022729020156261410274/
- MongoDB 3.2 用户角色配置
- MongoDB 3.2.7安装及用户角色配置
- MongoDB 3.2.7安装及用户角色配置
- mongodb 3.0 用户角色
- mongodb用户与角色
- MongoDB用户的角色权限
- MONGODB用户、角色和权限管理
- MongoDB中用户的角色说明
- MongoDB 用户角色授权与AUTH启用
- MongoDB用户认证配置
- MongoDB用户安全配置
- t3用户-角色-权限hibernate经典配置
- MongoDB配置用户安全模式
- MongoDB 3.2 创建用户
- MongoDB 3.2 创建用户
- 安装MongoDB配置及用户授权
- Linux下MongoDB(3.0)配置用户
- mongodb用户管理与权限配置
- PCB(进程控制块)以及Linux下的进程控制块task_struct
- UTF8和GBK版的区别
- SpringMVC-访问静态页面
- Spring框架中的单例Beans是线程安全的么
- unity 鼠标手势的左右滑动
- MongoDB 3.2 用户角色配置
- IOS TCP通讯
- 【JAVA】七 JAVA Dictionary 一 HashTable
- Opencv中的ROI介绍
- Socket编程
- 丛林探险
- 基于SSH+ExtJS开发的Web项目
- IO流—序列流、对象流、打印流、转换流
- OpenCV中图像及子图像ROI之间的复制