mongodb 3.0.x 添加用户名,密码,权限设置

最近遇到关于mongodb 3.0.x权限设置的问题,做了一下总结:

  • 第一给mongodb 3.0.x 添加user
第一步修改配置文件:
xxx@xxx:~$ sudo gedit /etc/mongod.conf
将下面
security:authorization: enabled
改为
#security
保存退出xxx@xxx:~$ ps -ef | grep mongodb
xxx@xxx:~$ sudo kill xxxx
xxx@xxx:~$ sudo service mongod startxxx@xxx:~$ mongo
MongoDB shell version: 3.0.7
connecting to: test
Server has startup warnings:
2015-10-27T17:01:07.973+0800 I CONTROL  [initandlisten]
2015-10-27T17:01:07.973+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2015-10-27T17:01:07.973+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2015-10-27T17:01:07.973+0800 I CONTROL  [initandlisten]
2015-10-27T17:01:07.973+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2015-10-27T17:01:07.973+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2015-10-27T17:01:07.973+0800 I CONTROL  [initandlisten]
> show dbs
admin  0.078GB
local  0.078GB> use admin
switched to db admin
> db.createUser(
... {
... user:"admin",
... pwd:"admin",
... roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"readWriteAnyDatabase",db:"admin"}]
... }
... )
Successfully added user: {"user" : "admin","roles" : [{"role" : "userAdminAnyDatabase","db" : "admin"},{"role" : "readWriteAnyDatabase","db" : "admin"}]
}
> db.system.users.find()
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "bUhMAodI9w6OPDt9GL5Auw==", "storedKey" : "jBhWrBoYjwz86PqlCUTMkSh3h2A=", "serverKey" : "DMq1OYN45RfPjWIi4jFKNW6BJ6k=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" }, { "role" : "readWriteAnyDatabase", "db" : "admin" } ] }> exit
bye
接下来在配置文件中恢复认证
xxx@xxx:~$ sudo gedit /etc/mongod.conf改#security:为
security:authorization: enabled
保存退出
接下来
xxx@xxx:~$ ps -ef | grep mongodb
xxx@xxx:~$ sudo kill xxxx
xxx@xxx:~$ sudo service mongod start
然后在mongo shell操作(注意1.该方式添加的用户不能用Robomongo 0.8.5连接,具体原因在下面;注意2.既然认证了就要先db.auth('xxx','xxx')返回1后再进行其他操作)如下操作
xxx@xxx:~$ mongo
MongoDB shell version: 3.0.7
connecting to: test
> use admin
switched to db admin
> db.auth('admin','admin')
1
>show dbs
admin  0.078GB
local  0.078GB
  • 第二用Robomongo 0.8.5连接mongodb 3.0.x
    应该有很多同学用第一种方式设置好用户后,用Robomongo 0.8.5连接mongodb 3.0.x会发现怎么都连接不上,
    为什么呢?
    咱先看下日志文件会发现有这么一句
    2015-10-27T09:28:47.588+0800 I ACCESS [conn5] Failed to authenticate admin@admin with mechanism MONGODB-CR: AuthenticationFailed UserNotFound Could not find user admin@admin
    原来,在mongodb 2.x采用的默认认证机制是MONGODB-CR
    而在mongodb官网说明中mongodb 3.0.x采用的认证机制是SCRAM-SHA-1
    而Robomongo 0.8.5的认证机制并没有升级(个人推测,也有可能可以在Robomongo哪个配置文件可以设置一下也不一定)
    下面就是如何操作:
第一步修改配置文件:
xxx@xxx:~$ sudo gedit /etc/mongod.conf
将下面
security:authorization: enabled
改为
#security
保存退出xxx@xxx:~$ ps -ef | grep mongodb
xxx@xxx:~$ sudo kill xxxx
xxx@xxx:~$ sudo service mongod startxxx@xxx:~$ mongo
MongoDB shell version: 3.0.7
connecting to: test
2015-10-27T18:10:13.137+0800 I CONTROL  [initandlisten]
2015-10-27T18:10:13.138+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2015-10-27T18:10:13.138+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2015-10-27T18:10:13.138+0800 I CONTROL  [initandlisten]
2015-10-27T18:10:13.138+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2015-10-27T18:10:13.138+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2015-10-27T18:10:13.138+0800 I CONTROL  [initandlisten]
> show dbs
admin  0.078GB
local  0.078GB
> use admin
switched to db admin
> show collections
system.indexes
system.users
system.version
> db.system.version.find()
{ "_id" : "authSchema", "currentVersion" : 5 }从上面可以看到"currentVersion" : 5
currentVersion为5则表示当前数据库的认证机制是SCRAM-SHA-1
而在mongodb 2.x中采用的默认认证机制是MONGODB-CR
所以想要在3.x版本中使用Robomongo 0.85中使用用户名密码连接数据库则可以将mongodb的数据库认证机制(当前为SCRAM-SHA-1)改为MONGODB-CR
那如何改呢?请看下面操作:> var schema=db.system.version.findOne({"_id" : "authSchema"})
> schema.currentVersion=3
3
> db.system.version.save(schema)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.system.version.find()
{ "_id" : "authSchema", "currentVersion" : 3 }
在这表示已经修改成功了。
下面创建用户(注意,若之前已经创建过用户的则要将用户删除,因为之前创建的用户采用的认证机制是SCRAM-SHA-1)
本人因为之前创建过,所以先drop掉用户
> use admin
switched to db admin
> db.dropUser('admin')
true
> db.createUser(
... {
... user:"admin",
... pwd:"admin",
... roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"readWriteAnyDatabase",db:"admin"}]
... }
... )
Successfully added user: {"user" : "admin","roles" : [{"role" : "userAdminAnyDatabase","db" : "admin"},{"role" : "readWriteAnyDatabase","db" : "admin"}]
}
> db.system.users.find()
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "MONGODB-CR" : "7c67ef13bbd4cae106d959320af3f704" }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" }, { "role" : "readWriteAnyDatabase", "db" : "admin" } ] }
> eixt
bye接下来在配置文件中恢复认证
xxx@xxx:~$ sudo gedit /etc/mongod.conf改#security:为
security:authorization: enabled
保存退出
接下来
xxx@xxx:~$ ps -ef | grep mongodb
xxx@xxx:~$ sudo kill xxxx
xxx@xxx:~$ sudo service mongod start
然后在mongo shell操作
(注意1.该方式添加的用户不能用Robomongo 0.8.5连接,具体原因在下面;注意2.既然认证了就要先db.auth('xxx','xxx')返回1后再进行其他操作)如下操作
xxx@xxx:~$ mongo
MongoDB shell version: 3.0.7
connecting to: test
> use admin
switched to db admin
> db.auth('admin','admin')
1
>show dbs
admin  0.078GB
local  0.078GB
  • 有个题外话:
    有些同学会发现怎么我的数据库怎么没有/etc下没有mongod.conf文件,那怎么操作
    没有mongod.conf配置文件,数据库其实加载的配置应该是内置的(本人理解)
    此时如果不显示指定配置文件启动数据库的话,可能不好添加权限认证,因为mongodb默认情况下就是不认证的,
    那如何操作呢?
    xxx@xxx:~/mongodb/mongodb/bin$ ./mongod –config /home/zyb/mongodb/mongodb.conf &
    上述操作即可指定配置文件启动数据库(上面路径是本人数据库存放的路径)
    其他设置权限的操作和上面一样。

转载请保留地址

mongodb 3.0.x 添加用户名和密码设置权限相关推荐

  1. win10创建新的计算机用户名和密码忘了,win10访问局域网电脑需要用户名和密码设置方法...

    当用户在同个办公环境下的时候,我们就可以将连接的同个网络设置成局域网模式,这样用户就能够访问局域网内电脑的文件,非常的方便,同时用户也能够设计访问局域网内电脑时需要用户名和密码,那么对此应该怎么设置呢 ...

  2. centos系统ftp服务器的目录权限,CentOS7 添加FTP用户并设置权限

    step 1 安装配置Vsftp服务器 一.配置防火墙,开启FTP服务器需要的端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewal ...

  3. 服务器tomcat版本修改密码,tomcat 9.0配置管理员用户名和密码

    登录后,可以管理查看发布网站的信息,岗安装好的tomcat是没有管理密码的,可以在配置文件中修改. 在conf/tomcat-users.xml的文件中修改配置,默认的角色用户是被注销掉的.我去掉注释 ...

  4. 网站添加用户名和密码_新手建站之搭建个人网站简易教程

    简单的建站教程,宝塔面板的安装以及博客程序的安装. 前言 本文是建立在站长搭建www.rss.wiki导航站和www.anli.one个人兴趣站点建站过程的基础上所编写的,新手写给新手看的内容,大神请 ...

  5. win7如何为计算机添加用户名和密码,win7系统电脑,如何的设置共享,共享计算机的地用户名和密码怎样设置...

    win7 实用标准文案 百度文库的东西自己能找到方法的...XP与WIN7如何共享 第一,双击桌面上网络图标. 第二,单击上面网络共享中心. 第三,单击左边的更改高级共享设置,在这儿设置你的共享方式. ...

  6. 在计算机中添加用户名和密码是多少,在win7系统中添加网络打印机提示输入用户名和密码的解决方案...

    无论谁在使用计算机安装网络打印机需要用户名和密码,您都可能会发现添加网络打印机提示输入用户名和密码的问题. 添加网络打印机提示输入用户名和密码对于用户来说是非常痛苦的. 到底是怎么回事?添加网络打印机 ...

  7. mysql添加用户名和密码

    mysql 如何添加/创建用户 CREATEUSER'username'@'host'IDENTIFIEDBY'password'; 说明:username-你将创建的用户名,host-指定该用户在哪 ...

  8. 网站添加用户名和密码_实测 | 10分钟搭建一个 WordPress 网站,便宜、快捷、稳定...

    经过我实测,大概10分钟左右建好了一个 WordPress 站点,站点为:boyzcl.com,感兴趣的可以去看看,目前还没有配置WP主题,后续会同步一下文章,以及某些不太方便说的内容. 不过我的10 ...

  9. 计算机win10添加用户名和密码是什么情况,win10系统添加网络打印机提示输入用户名和密码的图文方法...

    有关win10系统添加网络打印机提示输入用户名和密码的操作方法想必大家有所耳闻.但是能够对win10系统添加网络打印机提示输入用户名和密码进行实际操作的人却不多.其实解决win10系统添加网络打印机提 ...

最新文章

  1. 中小学教师职称计算机考试软件,中小学教师职称计算机考试大纲--2012年
  2. 需要排序的最短子数组的长度——是一个排序好的数组,中间某一部分被打乱了,让你找出打乱的那个子数组...
  3. mysql udf http.so_MySQL-UDF-HTTP + Express + WebSocket 实现数据库推送
  4. 程序员,你想不想进大厂?
  5. Forrester 首席分析师对话阿里云容器服务负责人:容器的未来趋势是什么?
  6. shell 脚本编写使用
  7. 网传梅姨照片竟然是电脑合成的!仅需 100 行代码,你也能做到!
  8. Spring的春天,直接召唤系--Singleton的Application Context
  9. 2010年,您还不“工作流”吗?
  10. 智能指针之auto_ptr
  11. [网络收集]LINUX磁盘挂载mount和共享
  12. ApiPost测试接口直接生成API文档
  13. python嵩天ppt_嵩天python课程笔记1
  14. SSM物业管理系统毕业设计-附源码310928
  15. 织梦网站源码,开源织梦网站源码,织梦dede网站源码
  16. 京东双叠加神单漏洞券操作教程
  17. 安卓实现浏览器app
  18. 企业人才战略2.0 相信技术人的力量
  19. 免费下载思科CCNP 642-353考试题库
  20. com.aliyun.openservices.ons.api.exception.ONSClientException: defaultMQProducer send order exception

热门文章

  1. SpringBoot_异常_01_Caused by: java.lang.BootstrapMethodError: java.lang.NoSuchMethodError
  2. 【Sublime Text3】Package Control:Install Package不能使用解决方法
  3. 如何将struct System.Byte byte []转换为C#中的System.IO.Stream对象?
  4. 用jQuery作为JS对象从选项中添加选项的最佳方法是什么?
  5. 滚动后如何检查元素是否可见?
  6. 【谦先生日志】程序员如何优雅地融入新环境
  7. 安装sql server 2016 always on配置dtc支持时遇到的问题
  8. ElasticSearch小操之Marvel,Sense
  9. 双系统(xp+ubuntu)删除ubuntu(好用)
  10. JavaScript 中的return true 和return false