mongodb3.0没有mongodb admin数据库库了,怎么添加超级管理员

如何对MongoDB 3.2.7进行用户权限管理配置 - 简书
如何对MongoDB 3.2.7进行用户权限管理配置
上次写了一篇,完成了MongoDB 3.2.7的安装,但需要应用到实际生产环境中,安全问题是必须要处理的。本篇主要介绍如何对MongoDB进行用户权限管理。
我知道的关系型数据库都是有权限控制的,什么用户能访问什么库,什么表,什么用户可以插入,更新,而有的用户只有读取权限。
例如:mysql安装配置好后,有一个自带的mysql数据库,里面有一张user表,用来存放用户,以及用户权限,而MongoDB这个最像关系型的数据库,有没有这样的表呢。
MongoDB常用命令
[root@snails ~]# ps -ef|grep mongod
[root@snails ~]# mongo --host=127.0.0.1 --port=27017
MongoDB shell version: 3.2.7
connecting to: 127.0.0.1:27017/test
& show dbs
#显示数据库列表
& show collections
#显示当前数据库中的集合(类似关系数据库中的表)
& show users
& use &db name&
#切换当前数据库,如果数据库不存在则创建数据库。
& db.help()
#显示数据库操作命令,里面有很多的命令
& db.foo.help()
#显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令
& db.foo.find()
#对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据)
& db.foo.find( { a : 1 } )
#对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1
MongoDB没有创建数据库的命令,但有类似的命令。
如:如果你想创建一个“myTest”的数据库,先运行use myTest命令,之后就做一些操作(如:db.createCollection('user')),这样就可以创建一个名叫“myTest”的数据库。
其他常用操作命令
& db.dropDatabase()
#删除当前使用数据库
& db.cloneDatabase("127.0.0.1")
#将指定机器上的数据库的数据克隆到当前数据库
& db.copyDatabase("mydb", "temp", "127.0.0.1")
#将本机的mydb的数据复制到temp数据库中
& db.repairDatabase()
#修复当前数据库
& db.getName()
#查看当前使用的数据库,也可以直接用db
& db.stats()
#显示当前db状态
& db.version()
#当前db版本
& db.getMongo()
#查看当前db的链接机器地址
& db.serverStatus()
#查看数据库服务器的状态
用户权限设置
掌握权限,理解下面4条基本上就差不多
1. MongoDB是没有默认管理员账号,所以要先添加管理员账号,再开启权限认证。
2. 切换到admin数据库,添加的账号才是管理员账号。
3. 用户只能在用户所在数据库登录,包括管理员账号。
4. 管理员可以管理所有数据库,但是不能直接管理其他数据库,要先在admin数据库认证后才可以。
添加管理员账号
[root@snails ~]# mongo --host=127.0.0.1 --port=27017
MongoDB shell version: 3.2.7
connecting to: 127.0.0.1:27017/test
& use admin
& show collections
& db.createUser(
user: "admin",
pwd: "mongodb:passok",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
Successfully added user: {
"user" : "admin",
"roles" : [
"role" : "userAdminAnyDatabase",
"db" : "admin"
& show users
& db.system.users.find()
开启权限验证
[root@snails ~]# echo "auth = true" && /root/mongodb/bin/mongodb.conf
[root@snails ~]# systemctl restart systemd-mongodb
验证权限是否生效
[root@snails ~]# mongo --port=27017
MongoDB shell version: 3.2.7
connecting to: 127.0.0.1:27017/test
& show dbs
T17:32:37.258+0800 E QUERY
[thread1] Error: listDatabases failed:{
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:760:19
shellHelper@src/mongo/shell/utils.js:650:15
@(shellhelp2):1:1
& use admin
switched to db admin
& db.auth('admin','mongodb:passok')
& show dbs
添加普通用户
& use mydb
switched to db mydb
& db.createUser(
user: "tonny",
pwd: "tonny@passok",
roles: [ { role: "readWrite", db: "mydb" } ]
Successfully added user: {
"user" : "tonny",
"roles" : [
"role" : "readWrite",
"db" : "mydb"
[root@snails ~]# mongo
MongoDB shell version: 3.2.7
connecting to: test
& use mydb
switched to db mydb
& db.auth('tonny','tonny@passok')
MongoDB数据库角色
内建的角色
数据库用户角色:read、readW
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色:__system
角色说明:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
官方详情角色说明 –&
配置文件示例
官方详解 –&
闲睱的时光用来记录。
centos7下安装3.2.6版本的MongoDB参考此篇文章 上述过程安装下的mongodb,在命令窗口中默认是超级用户,什么权限都有,这显然不是我们需要的。 在3.0版本以后是不存在admin数据库的,所以新建一个admin数据库,并添加一个角色 use admindb...
本文同步于个人Github博客:/johnnian/Blog/issues/8,欢迎留言。 安装软件包:mongodb-linux-x86_64-3.4.1.tgz 安装流程思路 目前最小节点是3个,本文档暂且按照3个节点来配置:A、B、...
一、MongoDB安装及配置 1.1、下载安装程序 MongoDB提供了linux平台上32位和64位的安装包,你可以在官网下载安装包。下载地址:http://www.mongodb.org/downloads 下载完安装包,并解压 gz(以下演示的是 64 位 Linux...
Mongodb enable authentication MongoDB 默认直接连接,无须身份验证,如果当前机器可以公网访问,且不注意Mongodb 端口(默认 27017)的开放状态,那么Mongodb就会产生安全风险,被利用此配置漏洞,入侵数据库。 容易遭受入侵的环...
前言 当我们以上一篇的方式开启mongo server的时候,我们的数据库是裸奔着的。在生产环境,必须有安全认证机制。mongodb提供了好几种机制,我们来说一种基于用户和角色的权限认证机制。 创建Root用户 首先,我们先正常方式开启服务器,默认是没有开启认证机制的:su...
姐姐和妈妈商量如何断了云兮的饮料供应。之前试过很多次,什么道理都讲了,就是要喝!今天,姐姐悄悄和妈妈说把饮料盒子搬空,然后告诉云兮,她自己喝了一箱子,好让罪恶感来绑架她。 但被云兮听见了。她一脸幽怨的看着妈妈和姥姥,极其幽怨的说:“我都听见了!”俨然是个大人的样子。 幸灾乐...
一圈圈年轮之后 许多事物 总会留下一些痕迹 就如废墟 就如寒冬草木的影子 从中总可以看到一些什么 看到一些关于繁华和衰落的印痕 无需言语 我懂 我都懂 马头琴在草原的忧伤 二胡在江南的流浪 我懂 我都懂 当时光老了 打开记忆之门 我们还是年轻的模样
曾经那位被欺凌的同学你现在是在温柔地对待这个世界还是冷眼地蜷缩在角落抑或...... 由京都动画制作的《声之形》动画电影于9月8日在我国内地上映,一时引起了巨大的反响,再加上女友的力荐,我便带着极大的兴趣到电影院观摩了这部堪称继《你的名字》后的又一催泪巨作的动画电影。 电影...MongoDB3.0.x版本用户授权配置(单机环境)_数据库技术_Linux公社-Linux系统门户网站
你好,游客
MongoDB3.0.x版本用户授权配置(单机环境)
来源:Linux社区&
作者:ljai
MongoDB数据库默认情况下是没有做权限控制的,只要能够连接所开放的端口就能进行访问,而且拥有root级别的权限;对于生产环境而言是极不安全的,所以需要建立用户,进行授权控制。
单机环境下的用户授权模块配置:
MongoDB的社区版本中有两个模块可以控制用户的访问:
--auth:&在mongod启动项中加入--auth,mongodb启动后,就可以完成授权模块的启用);
PS:虽然auth模块启用后本机还能否登陆到数据库,但是不具备增删改查的权限了,所以启动auth模块之前就应该创建一个超级用户
--keyFile &file&:&主要用于分片集群与副本集相互之间的授权使用,在单机情况下只要用到auth,如果是在集群(分片+副本集)环境下,就必须要用到该参数;
security.authorization:&在MongoDB 2.6版本开始,mongod/mongos的启动配置文件增加了YAML格式的写法,功能更auth是一样的,后面的操作中,都是采用该格式
security.keyFile:&格式与security.authorization相同,功能与--keyFile相同。
首先验证下非配置认证模块的访问:
[root@fo169 bin]# ./mongo
MongoDB shell version: 3.0.7
connecting to: test
Server has startup warnings:
T15:12:14.257+0800 I CONTROL
[initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
T15:12:14.257+0800 I CONTROL
[initandlisten]
& show dbs
&在没有配置的情况下,登录到数据库后,可以做任何操作。
配置认证模块及重启服务:&
编写了一个启动配置文件:mongodb.conf(文件中标红部分就为auth的授权模块)
[root@fo169 bin]# cat mongodb.conf
systemLog:
destination: file
path: "/data/auth/log/mongod.log"
logAppend: true
enabled: true
dbPath: "/data/auth/db"
directoryPerDB: true
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 4
directoryForIndexes: true
journalCompressor: zlib
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
port: 27017
processManagement:
fork: true
authorization: enabled
创建授权用户(超级管理员):&
MongoDB在V3.0版本之后内置了root 角色,也就是结合了readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin4个角色权限,类似于的sysdba角色,但是MongoDB的超级管理员用户名称是可以随便定义的:
[root@fo169 bin]# ./mongo
MongoDB shell version: 3.0.7
connecting to: test
Server has startup warnings:
2015-10-30T16:24:36.127+0800 I CONTROL
[initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2015-10-30T16:24:36.127+0800 I CONTROL
[initandlisten]
& use admin
switched to db admin
& db.createUser(
user: "ljaiadmin",
pwd: "123456",
roles: [ { role: "root", db: "admin" } ]
Successfully added user: {
"user" : "ljaiadmin",
"roles" : [
"role" : "root",
"db" : "admin"
这样就创建好一个ljaiadmin的超级管理员用户,创建全局用户或者超级用户,需要在MongoDB的admin数据库中创建(在其他库也可以创建,但是没有该角色功能),重启完mongod进程后,接下来做一下权限的验证:
[root@fo169 bin]# ./mongo
MongoDB shell version: 3.0.7
connecting to: test
& show dbs
(注:此时查看已提示没有授权执行listDatabases命令了)
2015-10-30T16:41:31.131+0800 E QUERY
Error: listDatabases failed:{
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13
at Error (&anonymous&)
at Mongo.getDBs (src/mongo/shell/mongo.js:47:15)
at shellHelper.show (src/mongo/shell/utils.js:630:33)
at shellHelper (src/mongo/shell/utils.js:524:36)
at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47
& use admin
switched to db admin
& db.auth('ljaiadmin','123456') (注:切换到admin用户进行授权验证)
& show dbs
(注:验证完成后,就可以读写等操作)
& use test2
switched to db test2
& show tables
& db.test2.find()
{ "_id" : ObjectId("909a76446af7"), "name" : "1" }
& db.test2.drop()
& db.dropDatabase()
{ "dropped" : "test2", "ok" : 1 }
& show dbs
& use test100
switched to db test100
& db.test111.insert({"test":"test"})
WriteResult({ "nInserted" : 1 })
& db.test111.find()
{ "_id" : ObjectId("51b3d95638bb"), "test" : "test" }
& use admin
switched to db admin
& show users
"_id" : "admin.ljaiadmin",
"user" : "ljaiadmin",
"db" : "admin",
"roles" : [
"role" : "root",
"db" : "admin"
创建普通用户
用可以对test123数据库读写的rwtest123用户为例:
& use test123
switched to db test123
& db.createUser(
user: "rwtest123",
pwd: "123456",
roles: [ { role: "readWrite", db: "test123" } ]
Successfully added user: {
"user" : "rwtest123",
"roles" : [
"role" : "readWrite",
"db" : "test123"
#所建的rwtest123用户可以在test123数据库中进行增删改查操作,但是其他操作就不行了
&db.auth('rwtest123','123456')
switched to db test123
& db.test123.insert({"test":"test"})
WriteResult({ "nInserted" : 1 })
& db.test123.find()
{ "_id" : ObjectId("563332ebc8a59ae4fe96bbf5"), "test" : "test" }
& db.test123.drop()
& use test100
switched to db test100
& db.test100.find()
Error: error: { "$err" : "not authorized for query on test100.test100", "code" : 13 }
配置参考:
&MongoDB数据库的用户权限控制权限还是比较多的,有系统自带的,已经定义好的角色,也可以自己定义角色权限,需要根据业务需要进行权限分配:
自带角色的说明(一般内置的角色基本上就可以满足生产环境需求了):
https://docs.mongodb.org/manual/core/security-built-in-roles/
用户自行定义角色的说明:
https://docs.mongodb.org/manual/core/security-user-defined-roles/
用户管理配置的说明
https://docs.mongodb.org/manual/reference/method/#user-management-methods
更多MongoDB相关内容可以看看以下的有用链接:&
MongoDB 3.0 正式版发布下载&
编译安装MongoDB
CentOS 编译安装 MongoDB与mongoDB的php扩展
CentOS 6 使用 yum 安装MongoDB及服务器端配置
13.04下安装MongoDB2.4.3
MongoDB入门必读(概念与实战并重)
Ubunu 14.04下MongoDB的安装指南
《MongoDB 权威指南》(MongoDB: The Definitive Guide)英文文字版[PDF]
Nagios监控MongoDB分片集群服务实战
基于CentOS 6.5操作系统搭建MongoDB服务
MongoDB 的详细介绍:MongoDB 的下载地址:
本文永久更新链接地址:
相关资讯 & & &
& (05月18日)
& (08/30/:40)
& (05/23/:17)
& (10/17/:34)
& (08/28/:55)
& (03/07/:02)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款相关文章推荐
启动MongoDB服务时,在没有指定--auth参数情况下,不需要任何验证就可以对数据库进行任意操作。为了安全,一般需要为数据库创建相应的角色,为角色分配相应的权限,在启动MongoDB时指定--au...
我参考了别人博客的内容(博客地址:/blog/2183478),并且结合我自己的学习实践,初步了解了如何为MongoDB添加管理员用户以及认证的方法。...
mongodb 添加用户及权限设置详解
现在需要创建一个帐号,该账号需要有grant权限,即:账号管理的授权权限。注意一点,帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth)
1.在admin库中,添加用户并授权
官方文档说明:https://docs.mongodb.org/manual/tutorial/manage-users-and-roles
db.createUser(
最近遇到很多问MONGODB用户认证授权方面的问题,现在特记录下来,与大家共享。
一、概念理解
1、用户概念
Mongodb的用户是由 用户名+所属库名组成
MongoDB 3.0 安全权限访问控制,在添加用户上面3.0版本和之前的版本有很大的区别,这里就说明下3.0的添加用户的方法。
环境、测试:
通过设置width/height和layout_weight属性,巧妙平分LinearLayout布局
Microsoft Windows [版本 6.3.9600]
(c) 2013 Microsoft Corporation。保留所有权利。
C:\Users\dell>d:
D:\>cd mon...
mongoDB权限设置之创建管理员和普通用户
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)博客分类:
管理员账号无法执行show dbs 、show collections{
"_id" : ObjectId("52a82bb26cea234c4deb06fd"),
"user" : "admin",
"pwd" : "7c67ef13bbd4cae106df704",
"roles" : [
"userAdminAnyDatabase"
db.system.users.findOne()
"_id" : ObjectId("52afa94bad8b7ce"),
"user" : "admin",
"pwd" : "7c67ef13bbd4cae106df704",
"roles" : [
"userAdminAnyDatabase",
"dbAdminAnyDatabase",
"readWriteAnyDatabase",
"clusterAdmin"
功能全开这才是超级管理员的权限嘛
浏览: 143075 次
来自: 上海
我想问下:
看您的文档
我把服务搭了起来 ,但 ...
accp_huangxin 写道写得不错!学习学习
ftp集群的问题是,各个服务器之间是否要实现文件同步?服务虽然 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 mongodb 添加数据库 的文章

 

随机推荐