mongodb 安全认证

默认情况下,mongodb不启用验证的。数据库级别的权限,要么可读写要么只读权限。mongod的验证配置比较操蛋。

分两种情形:一种是单服务器,只需启动时添加–auth参数即可。 另一种是复制集、分片集群服务器,必须指定keyfile参数,其他节点之间的通讯基于该keyfile。

在这种情况下,–auth参数是隐含启用的,所有的mongodb访问都必须验证的。

Mongodb中安全权限验证是数据库级别的

1、在admin中创建的 权限账号是全局性的,可以访问所有DB;

2、在非admin中创建的权限账号是 本地账号,只对本地DB具有操作权限;

3、如果在非 admin数据中 创建权限账号时指定了具有对其他DB的权限,则相应的具有其权限;

4、密码中不能有 < > & " ‘ : @

************************************************

db.createUser({user:"wenzhong",pwd:"[email protected]",roles:["root"]},{w:1,wtimeout:10000});

************************************************

一、单服务器模式

添加管理员用户,admin库下的用户是全局用户,对所有的数据库可读写。

# ./mongo

> use admin

> db.addUser("root","www.ttlsa.com")

> db.auth("root","www.ttlsa.com")

创建普通的用户,是数据库级别的。

> use database_name

> db.addUser(‘guest‘,‘www.ttlsa.com‘) 可读写

> db.addUser(‘guest‘,‘www.ttlsa.com‘,true) 只可读

查看用户

> db.system.users.find()

删除用户

> db.removeUser(username)

> db.system.users.remove( { user: username } )

配置文件加上下面的参数后重新启动mongod实例

auth = ture

二、复制集与分片集群模式下

2.1 keyfile规则

1. 集群服务器之间通讯通过keyfile进行身份验证。

2. 每个实例的keyfile文件内容要一致。

3. keyfile文件权限仅当前用户可读。

4. 集群成员都需要指定–keyFile参数。

5. 每个客户端连接到数据库之前必须验证。

6. key长度必须在6到1024个字符之间,否则会报错,mongod无法启动。

7. 任何空格被忽略。

8. 最好是3的倍数 。key不能包含非法字符=,否则会报错,mongod无法启动 。

1、在primary服务器上 生产keyfile文件秘钥  (注必须是 600权限,否则会报错)

先在 Admin库先创建 超级账号(primary)

replSet:primary>use admin

replSet:primary>db.createUser({user:"wenzhong",pwd:"[email protected]",roles:["root"]},{w:1,wtimeout:10000});

2、

sheel> openssl rand -base64 666 > /opt/mongo/conf/MongoReplSet_KeyFile

sheel> chown mongod.mongod   /opt/mongo/conf/MongoReplSet_KeyFile

sheel> chmod 600   /opt/mongo/conf/MongoReplSet_KeyFile

3、

将 产生的 keyfile 文件 拷贝到 其他成员服务器

4、

修改配置文件

keyFile=/opt/mongo/conf/MongoReplSet_KeyFile

5、

重启mongod服务(primary-secondary)

replSet:primary>use admin

replSet:primary>rs.stepDown(60);

replSet:secondary>db.shutdownServer()

cat /etc/rc.local

sudo  runuser -c "/usr/local/mongo/bin/mongod -f /opt/mongo/conf/mongo.conf" mongod

依次重启 secondary成员

时间: 2024-08-01 06:41:46

mongodb 安全认证的相关文章

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

mongodb 在认证(auth)的情况下,配置主从(master &amp; slave)

master配置 本机 :192.168.100.23:27017 /etc/mongodb/mongo.conf port = 27017  dbpath = /data/mongodb_t  logpath = /var/log/mongodb_t.log  logappend = true  journal = true  fork = true 1. 以上配置单机打开mongo,对admin数据库进行设置 据资料, 必须建立全局用户root,个人感觉是超级管理员: 必须对local数据库

mongodb分片认证

启动configsvr 1. 确保mongdb的configsvr是采用service模式启动的,即从/etc/init.d下的脚本启动的,其用户是mongod. 2. 确保mongod的配置文件完全相同. 3. 确保整个集群的所有keyFile文件内容相同. 启动mongos 1. 使用以下命令启动,以确保用户切换为mongod: runuser -s /bin/bash mongod -c '/usr/bin/mongos --configdb confighost-01:27019,con

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

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

mongodb 安装到创建用户,认证auth,httpinterface

今天花了一天时间来解开这个mongodb的谜团,如果有遇到了其他的问题,可以咨询我. #开始 2.6.10安装方式 不同版本后面设置用户权限方式有所差异 #下载这个版本的mongodb mongodb-linux-x86_64-2.6.10.gz #解压到当前目录tar -zxf mongodb-linux-x86_64-2.6.10.gz #更改文件夹名称mv mongodb-linux-x86_64-2.6.10 mongodb2.6.10 #在mongodb2.6.10 下创建mongod

mongodb添加用户认证

连接上mongodb并新建用户 use mall db.createUser(    {      user: "haha",      pwd: "123456",      roles:        [          { role: "readWrite", db: "mall" },                  ]    } 启动的时候添加--auth参数 可以用-u -p参数登陆 -> mongo [

5、MongoDB学习之安全与认证

每个MongoDB库可以有许多用户,只有开启了用户并且有对于的库操作权限才能读写操作,MongoDB安全机制为:1.首先要建立一个超级用户,可以由超级用户认证后再创建对应库的用户 目标: 1.创建一个超级用户进行管理(包括创建新用户) 2.超级用户认证后再创建普通用户用于读写对应的数据库 版本: > db.version() 3.4.7 一.使用admin数据库 > use admin switched to db admin > show collections 二.创建超级用户 &g

[ 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