阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MongoDB3.X版本的 的用户认证

106次阅读
没有评论

共计 2464 个字符,预计需要花费 7 分钟才能阅读完成。

一直使用公司的 mongodb 环境,本地的 mongodb 没有开启认证,为了环境更一致,决定加上本地 mongodb 的认证,不过在这个过程中发生了点波折。

我使用的是 Window 版本的 3.2,公司使用的是 2.6 的版本,在认证上是有区别的,mongodb 从 3.0 版本开始加入了 SCRAM-HAS- 1 方式,但是 PHP 里不支持,支持的 2.X 版本里的 MONGODB-CR 模式,这个就需要修改下配置了。有人说在配置文档里加 setParameter

setParameter: 
    authenticationMechanisms: MONGODB-CR

需要注意一点,配置文件的缩进是用空格的,制表符会报错的。

但是没有起作用,可能针对 3.2 之前的版本可以吧,也或者某些细节没注意到,然后继续靠网络和文档,发现了另一种方法,需要下面 6 步骤:

为了兼容 3.0 之前的版本,需要进行下面几步
1、在不开启 auth 的模式进入 mongo
use admin;
db.createUser({user:’shang’,pwd:’shang’,roles:[{role:’root’,db:’admin’}]});// 因为不执行这一步,db.system.version 里不会有数据
2、修改 authcurrentVersion
var schema = db.system.version.findOne({‘_id’:’authSchema’});
schema.currentVersion=3;
db.system.version.save(schema);
3、需要 drop 掉之前使用 SCRAM-HAS-1 认证的用户 shang
db.dropUser(‘shang’);
4、以不开启 auth 的模式重启后创建新的用户
db.shutdownServer();
mongo.exe
use admin;
db.createUser({user:’shang’,pwd:’shang’,roles:[{role:’root’,db:’admin’}]});// 现在创建的是使用 MONGODB-CR 认证的用户
5、以开启 auth 的模式重启
use admin;
db.auth(‘shang’, ‘shang’);
6、现在还可以创建其他用户
use robo;
db.createUser({user:’robo’,pwd:’robo’,roles:[{role:’readWrite’,db:’robo’}]});// 经测试,使用 Robomongo 连接,选择两种认证都可以联通

后来发现起始修改的是 参数 authSchemaVersion 不知道直接在配置文件里加入下面的代码可行吗?可以找时间试试,经证实不可以,会提示“BadValue: Cannot use –setParameter to set “authSchemaVersion” at startup”。

setParameter:
    authSchemaVersion: 3

下面还有关于配置文件和使用配置文件安装到 window 服务和启动的命令

配置文件 mongo.cfg
systemLog:
    destination: file
    path: D:/mongodb/data/log/mongod.log
storage:
    dbPath: D:/mongodb/data/db
net:
    bindIp: 127.0.0.1
    port: 27017
security: 
    authorization: enabled
setParameter: 
    authenticationMechanisms: MONGODB-CR
    enableLocalhostAuthBypass: false
    logLevel: 4

使用配置文件启动和安装到 window 服务
mongod.exe –config D:/mongodb/mongod.cfg –install
net start MongoDB
net stop MongoDB

最后说下关于认证里面的角色

基本的角色
userAdminAnyDatabase 这个角色拥有分配角色和用户的权限,但没有查写的缺陷
root  这是超级管理员
readWrite  有读写权限
read    有读权限

关闭服务
db.shutdownServer();

更多 MongoDB 相关教程见以下内容

CentOS 编译安装 MongoDB 与 mongoDB 的 php 扩展 http://www.linuxidc.com/Linux/2012-02/53833.htm

CentOS 6 使用 yum 安装 MongoDB 及服务器端配置 http://www.linuxidc.com/Linux/2012-08/68196.htm

Ubuntu 13.04 下安装 MongoDB2.4.3 http://www.linuxidc.com/Linux/2013-05/84227.htm

MongoDB 入门必读(概念与实战并重) http://www.linuxidc.com/Linux/2013-07/87105.htm

Ubunu 14.04 下 MongoDB 的安装指南 http://www.linuxidc.com/Linux/2014-08/105364.htm

《MongoDB 权威指南》(MongoDB: The Definitive Guide)英文文字版[PDF] http://www.linuxidc.com/Linux/2012-07/66735.htm

Nagios 监控 MongoDB 分片集群服务实战 http://www.linuxidc.com/Linux/2014-10/107826.htm

基于 CentOS 6.5 操作系统搭建 MongoDB 服务 http://www.linuxidc.com/Linux/2014-11/108900.htm

MongoDB 的详细介绍:请点这里
MongoDB 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-02/140683.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计2464字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中