linux mongo 设置密码,mongodb在linux下需要用户名密码连接

MongoDB 缺省是没有设置鉴权的,业界大部分使用 MongoDB 的项目也没有设置访问权限。这就意味着只要知道 MongoDB 服务器的端口,任何能访问到这台服务器的人都可以查询和操作 MongoDB 数据库的内容。在一些项目当中,这种使用方式会被看成是一种安全漏洞

一、开启认证的方式

可以通过设置用户名、密码来连接mongodb

运行mongodb时,添加--auth参数,即可开启认证

./mongod --dbpath=./mongodb/data --port=27017 --auth

二、创建mongodb用户

开启认证后,连接mongodb时,就需要提供用户名和密码。

mongodb的用户分两种,一种是管理员,一种是普通用户。

管理员管理普通用户、普通用户管理数据库数据,所以我们要先创建管理员

(1)创建管理员必须要在admin数据库下创建,首先关闭认证,即用一下命令运行mongodb

./mongod --dbpath=./mongodb/data --port=27017(2)创建管理员

db必须为admin

db.createUser({user:'admin',pwd:'123456',roles:[{role:'readWriteAnyDatabase',db:'admin'}]})

readAnyDatabase:在admin数据库下建立,可以读取所有数据库的信息

readWriteAnyDatabase:在admin数据库下建立,可以读写所有数据库的信息

userAdminAnyDatabase:在admin数据库下建立,可以管理所有数据库的用户

dbAdminAnyDatabase:在admin数据库下建立,可以管理所有数据库的信息(类似于所有数据库的dbAdmin账户)

这里我们用readWriteAnyDatabase

(3)创建普通用户

db为要操作的数据库

db.createUser({user:'dev',pwd:'123456',roles:[{role:'dbOwner',db:'is'}]})

三、开启认证运行

(1)修改mongodb的authSchema版本为3

开启认证运行mongodb时,发现报错

MONGODB-CR credentials missing in the user document网上查询资料后发现,是因为admin数据库里面system.version文档里面的authSchema版本为5,应该修改成3就可以。

先关闭认证,把authSchema的版本修改为3

var schema = db.system.version.findOne({“_id” : “authSchema”})

schema.currentVersion = 3

db.system.version.save(schema)

(2)重新创建管理员用户和普通用户

如果你现在开启认证,仍然会提示AuthenticationFailed MONGODB-CR credentials missing in the user document   原因是原来创建的用户已经使用了SCRAM-SHA-1认证方式

故先删除管理员和普通用户,再重新创建。操作之前,mongodb必须以无需认证的方式运行

use admin

db.dropUser("admin")

db.createUser({user:'admin',pwd:'123456',roles:[{role:'readWriteAnyDatabase',db:'admin'}]})

use is

db.dropUser("dev")

db.createUser({user:'dev',pwd:'123456',roles:[{role:'dbOwner',db:'is'}]})

(3)开启认证运行mongodb

如果要操作is数据库,则需要用普通用户登录,虽然管理员用户admin角色是可以操作其他数据库。但是java程序中用admin用户没办法正常操作is数据库,

只能用普通用户dev去操作数据库

四、开机启动

编译文件

vim /etc/rc.local

添加以下指令

/usr/application/mongodb/mongodb-linux-x86_64-rhel70-3.4.7/bin/mongod --dbpath=/usr/application/mongodb/data/ --port=27017 --auth --logpath=/usr/application/mongodb/logs --logappend -fork

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值