【MongoDB】开启认证权限

1.

mongodb.conf :

添加

auth=true

2.

use admin (3.0+ 使用 createUser ;<3.0版本  http://www.cnblogs.com/guizi/archive/2012/11/20/2779500.html)

db.createUser({  user: "root",  pwd: "123456",  roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]  }  )

> db.createUser({  user: "root",  pwd: "123456",  roles: [ { role: "userAdminAny
Database", db: "admin" } ]  }  )
Successfully added user: {
        "user" : "root",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}
not authorized on test to execute command-MongoDB的权限配置

直接报Command ‘$eval‘ failed: not authorized on这个错误,可以确认是权限的问题

解决方案:
在官网  http://docs.mongodb.org/manual/reference/command/eval/#dbcmd.eval 有一段描述:

If authorization is enabled, you must have access to all actions on all resources in order to run eval. Providing such access is not recommended, but if your organization requires a user to run eval, create a role that grants anyAction on anyResource. Do not assign this role to any other user.

解决步骤:

1)不带--auth参数启动数据库,所以不需要帐号即可连上MongoDB。

2)新建一个角色,比如叫 sysadmin,需要先切换到admin库进行如下操作:

[C#] 纯文本查看 复制代码

> use admin
switched to db admin
> db.createRole({role:‘sysadmin‘,roles:[],
privileges:[
{resource:{anyResource:true},actions:[‘anyAction‘]}
]})

3)然后,新建一个用户,使用这个角色,注意,这个角色的db是admin,操作如下:
[C#] 纯文本查看 复制代码

> use woplus
switched to db woplus
> db.createUser({
user:‘sa‘,
pwd:‘sufeinet.com‘,
roles:[
{role:‘sysadmin‘,db:‘admin‘}
]})

好了现在重启启动数据库带上
--auth
就可以正常执行了

3.登陆

>  db.auth("admin","admin")
Error: 18 Authentication failed.
0
> user admin
2015-07-28T16:44:43.034+0800 E QUERY    SyntaxError: Unexpected identifier

--这样操作成功了
> use admin
switched to db admin
> db.auth("root","123456")
1--登陆失败

> db.auth("root","111")
2015-07-28T16:52:51.352+0800 I NETWORK Socket recv() errno:10053 An established
connection was aborted by the software in your host machine. 127.0.0.1:27017
2015-07-28T16:52:51.367+0800 I NETWORK SocketException: remote: 127.0.0.1:27017
error: 9001 socket exception [RECV_ERROR] server [127.0.0.1:27017]
2015-07-28T16:52:51.367+0800 I NETWORK DBClientCursor::init call() failed
Error: error doing query: failed
0
2015-07-28T16:52:51.371+0800 I NETWORK trying reconnect to 127.0.0.1:27017 (127
.0.0.1) failed
2015-07-28T16:52:51.373+0800 I NETWORK reconnect 127.0.0.1:27017 (127.0.0.1) ok

不知道是不是这个原因,开启 auth后 MongoVUE不能连接。

MongoVUE 是个比较好用的MongoDB客户端,不过免费版在15天过后,不能使用gridfs,Server Monitoring等功能。

关于安全性操作还需要继续研究

时间: 2024-11-07 00:49:28

【MongoDB】开启认证权限的相关文章

MongoDB学习笔记—权限管理

1.MongoDB权限介绍 a 上篇文章中,我们在Linux下配置了MongoDB环境并且将其设置为服务随机器启动而启动,那么接下来这篇文章我们就来简单说一下MongoDB下对登录用户权限的管理. b  MongoDB安装完成后,默认是不需要输入用户名密码即可登录的,但是往往数据库方面我们会处于安全性的考虑而设置用户名密码,本篇文章主要介绍了MongoDB添加管理员/普通用户的方法. c 在我们使用的关系型数据库中,一般都是含有权限控制的,也就是说配置什么用户访问什么数据库,什么数据表,什么用户

【Mongodb】用户和认证 权限总结

开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以对数据库任意操作而且可以远程访问数据库!   在刚安装完毕的时候MongoDB都默认有一个admin数据库,此时admin数据库是空的,没有记录权限相关的信息!当admin.system.users一个用户都没有时,即使mongod启动时添加了--auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作(不管是否是以--auth 参数启动),直到在admin.system.users中添

[ MongoDB ] 3.X权限认证控制

1. 前言 介绍 Mongodb 3.X 的认证控制 2. 环境搭建 [[email protected]192.168.118.16 /usr/local/src]#wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-3.6.11.tgz [[email protected]192.168.118.16 /usr/local/src]#tar xf mongodb-linux-x86_64-3.6.11.tgz [[emai

Mongodb开启远程连接并认证

环境: Mongodb版本:3.4.6 步骤: 1.  mongo创建管理员: 在mongo shell下: use admin db.createUser( { user: "testuser", pwd: "testpassword", roles: [ { role: "readWriteAnyDatabase", db: "admin" } ] } ) role的取值有如下,这里取可以读写任务数据库. 2. mongo

Mongodb安全认证

Mongodb安全认证在单实例和副本集两种情况下不太一样,单实例相对简单,只要在启动时加上 --auth参数即可,但副本集则需要keyfile. 一.单实例 1.启动服务(先不要加auth参数) 2.登陆后切换到admin库并添加管理员账号 2.1  创建系统管理员用户 默认条件下,超级管理员只能用于帐号管理,不能进行其他数据库操作,可以通过自己给自己授权实现.生产环境中的管理员,如果某个帐号包含了角色userAdminAnyDatabase或者userAdmin,就应该仅仅用于帐号和角色管理,

mongo db 学习笔记 之二: mongodb 用户认证

首先要知道mongodb默认安装后是没有任何认证开启的,也就是说,所有能连接到服务器的人都能进数据查看,当然,你可以用防火墙来挡.但没有防火墙的保护,数据库暴露出来是非常危险的. mongodb关于安全分为几个方面,主要是:认证,基于角色的访问控制(授权),审计,加密,部署和环境的安全(涉及到网络跟系统的访问环境). 一 关于认证 使用用户名认证指令为: mongo --port 27017 -u manager -p 12345678 --authenticationDatabase admi

python | ubuntu 中 mongodb 数据读写权限配置

首先,我们先对mongodb 数据库的权限做一点说明: 1 默认情况下,mongodb 没有管理员账号2 只有在 admin 数据库中才能添加管理员账号并开启权限3 用户只能在所在的数据库中登录,包括管理员账号4 管理员可以管理所有数据库,但不能直接管理,需要在 admin 里认证后才能 一.设置管理员账号 ssh 登录服务器,执行: // 开启ubuntu上的数据库 sudo mongod service start // 使用shell mongo --port 19999 // 切换到 a

MongoDB安装以及MongoDB开启多实例

MongoDB安装方法 一.手工编译安装 软件包百度网盘链接:https://pan.baidu.com/s/19oPP-3k7MiPsemO2cLsdng 密码:k86h 1.挂载本地后解压到opt目录下tar zxf mongodb-linux-x86_64-rhel70-4.0.0.tgz -C /opt/ 2.移动解压过后的包到/usr/local/目录中并重命名mv mongodb-linux-x86_64-rhel70-4.0.0/ /usr/local/mongodb 3.创建配置

centos 6.x 7.x 批量添加用户 开启sudo 权限 并设置密匙登录

需求背景: 局域网内全公司有50余台Linux服务器,现在有两个运维人员,之前都是使用root账号登录来管理服务器,现在想在每台服务器添加各自的账号,开启sudo权限,并设置密钥登录(密钥提前准备好了). 需求分析: 功能其实很简单,但是如果逐一登录服务器去配置,一台服务器5分钟,50台我已经不敢想象了--,所以想办法弄得简单些. 搭建简单ftp服务器: 本机利用IIS建立一个ftp服务器,把shell脚本,和管理员公钥放进去,注意允许ftp通过防火墙(详细步骤略)5分钟内可以完成本步骤:浏览器