设为首页 收藏本站
查看: 1076|回复: 0

[经验分享] mongoDB之用户及权限设置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-10-26 10:43:13 | 显示全部楼层 |阅读模式
  转自 http://www.tuicool.com/articles/nE7vaqj
  亲测有用
  之前用MongoDB没有设置用户和权限,一直都是本机应用程序连接MongoDB。在服务器上部署后对外没有开数据库连接端口,本机应用程序连接再开放应用程序端口供外部访问。想想很不对劲还是设置下用户授权吧。
  我部署的环境是windows下MongoDB2.4.8版本。首先要开启安全模式的话,在启动MongoDB服务的时候就要加上--auth参数,命令如下:
D:\mongodb>mongod.exe --dbpath D:\mongodb\data --logpath=D:\mongodb\logs\mongodb.log --auth  这样的话再连接MongoDB操作的时候就需要一定的权限。
  一、首先我们需要在没有加"--auth"权限参数启动服务进行用户权限管理
  我们这样启动MongoDB服务:
D:\mongodb>mongod.exe --dbpath D:\mongodb\data --logpath=D:\mongodb\logs\mongodb.log  这时不指定用户连接mongodb,是可以登录并操作的,我的操作如下:
D:\>mongo  
MongoDB shell version: 2.4.8connecting to: test> show dbs
  
admin   (empty)local   0.078125GB>
  可以看到默认显示两个库,我们需要进入admin库进行权限设置(这个时候因为服务没有添加权限参数,所以默认是有权限进行相关设置的)
  > use admin
  switched to db admin
  > db.addUser('sa','sa')
  {
  "user" : "sa",
  "readOnly" : false,
  "pwd" : "75692b1d11c072c6c79332e248c4f699",
  "_id" : ObjectId("53af835ada88ac42a40917a0")
  }
  > db.system.users.find()
  { "_id" : ObjectId("53af835ada88ac42a40917a0"), "user" : "sa", "readOnly" : false, "pwd" : "75692b1d11c072c6c79332e248c4f699" }
  二、我们关掉之前开启的服务,添加"--auth"权限参数,重新启动MongoDB服务
D:\>mongod --dbpath D:\mongodb\data --logpath=D:\mongodb\logs\mongodb.log --auth  我们再次连接并操作:
  D:\>mongo
  MongoDB shell version: 2.4.8
  connecting to: test
  > use admin
  switched to db admin
  > show collections
  Sun Jun 29 11:17:27.103 error: {
  "$err" : "not authorized for query on admin.system.namespaces",
  "code" : 16550
  } at src/mongo/shell/query.js:128
  发现如果不加身份信息默认连接的话,是没有权限操作的。我们验证下之前添加的用户,再操作试下:
> db.auth('sa','sa')1            //返回1表示验证成功,返回0表示验证失败  
> show collections
  
system.indexes
  
system.users
  发现验证成功可以对admin库进行操作了,我们再连接其他库试试:
D:\>mongo  
MongoDB shell version: 2.4.8connecting to: test> show collections
  
Sun Jun 29 11:20:17.996 error: {  "$err" : "not authorized for query on test.system.namespaces",  "code" : 16550} at src/mongo/shell/query.js:128> db.auth('sa','sa')
  
Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" }0
  发现这里验证失败了,之前设置的admin用户验证不管用。查了资料知道必须先从admin登录再use其他库才能被验证通过:
D:\>mongo  
MongoDB shell version: 2.4.8connecting to: test> use admin
  
switched to db admin> db.auth('sa','sa')1> use test
  
switched to db test> show collections
  三、添加完顶层admin用户,可以用admin账户进行其他用户的设置
  如果想让单独的库有单独的用户名就得先从admin登录然后设置相应的用户信息,具体操作如下:
D:\>mongo  
MongoDB shell version: 2.4.8connecting to: test> use admin
  
switched to db admin> db.auth('sa','sa')1                                //先从admin登录> use test
  
switched to db test> show collections> db.addUser('test','test') //添加test库的用户{        "user" : "test",        "readOnly" : false,        "pwd" : "a6de521abefc2fed4f5876855a3484f5",        "_id" : ObjectId("53af874c5017b6747e68da2a")
  
}
  再次单独登录test试试:
D:\>mongo  
MongoDB shell version: 2.4.8connecting to: test> show collections       //未登录没有权限Sun Jun 29 11:27:52.899 error: {  "$err" : "not authorized for query on test.system.namespaces",  "code" : 16550} at src/mongo/shell/query.js:128> db.auth('test','test')     //之前设置的账户1    //登录成功> show collections
  
system.indexes
  
system.users
  四、设置完admin账户后开启带权限参数的MongoDB服务在可视化管理器中管理用户权限
  在windows下我使用了MongoVUE可视化管理工具。建立新连接:

  之前启动不带auth参数的服务时,不添加用户名密码连接是可以连接的,因为设置了auth参数所以这里必须添加用户名和密码;把上面设置的admin用户sa填入就可以连接上了。 连接上之后打开一个库,里面有个Users设置

  这里可以对某一个库进行用户的添加删除修改等操作,这是最高权限的admin视图,如果用test库的test用户登录的话,视图就只能看见test库了
  以上就是windows下使用MongoDB在shell和可视化工具中对用户权限设置的简单操作方法。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-626678-1-1.html 上篇帖子: MongoDB 自动启动脚本 下篇帖子: MongoDB Sharding中的用户认证问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表