mongodb创建用户密码

摘要:
测试服务的mongodb经常被删除,因为没有设置帐户密码,相应的端口也不受限制。这是由于mongodb的默认机制。如果尚未创建用户密码,则可以创建一个用户,然后打开它。在conf中启动身份验证模式,然后重新启动mongodb以使其生效。

自从接手这个项目以来,真的被坑惨了。测试服的mongodb经常被删,原因是没有设置账户密码,相应的端口也没有限。只要知道连接地址谁都可以删库。这要归功于mongodb的默认机制。就这样竟然度过了两年多,我一来就特么删库。

以mongo3.4.24为例,首先在mongo.conf中开启认证。还没创建用户密码的可以创建用户了再开启。

security:
   authorization: enabled

登录,创建用户并授权,登录用admin库的用户

普通登录:bin/mongo 127.0.0.1:27017
认证登录: bin/mongo 127.0.0.1:27017 -u user -p password --authenticationDatabase admin

查询和删除用户命令

use admin
db.system.users.find();
db.system.users.remove({});

创建admin的用户,注意admin这个库要给root权限,否则开启权限验证登录一些操作会显示没有权限

use admin
db.createUser({ user: "root", pwd: "password", roles:[{role:"root",db: "admin"}]});
db.auth("root","admin");

特别注意:mongodb和spring-mongodb默认的认证机制不同,会导致项目中mongo连接不上!
 1、mongodb的认证机制有2种:SCRAM-SHA-1和MONGODB-CR。3.0之后版本默认为:SCRAM-SHA-1;
 2、spring-mongodb默认为:MONGODB-CR,并不支持设置认证方式;

db.system.version.findOne({"_id":"authSchema"});
db.system.version.insert({"_id":"authSchema","currentVersion":3})
db.system.version.update({"_id":"authSchema"},{$set:{"currentVersion":3}})

创建其他数据库的用户,mongo的每个库的用户是独立的。你有多少个库就要创建多少个用户,即使用户名一样也要。

use addressbook
db.createUser({user:"user",pwd:"password",roles:[{role:"readWrite", db:"addressbook"},{role:"dbAdmin",db:"addressbook"},{role:"dbOwner",db:"addressbook"}]});
db.auth("zaixiudb","password");
use imRoom
db.createUser({user:"user",pwd:"password",roles:[{role:"readWrite", db:"imRoom"},{role:"dbAdmin",db:"imRoom"},{role:"dbOwner",db:"imRoom"}]});
db.auth("zaixiudb","password");

* 这里要特别注意权限从小到大,如下刚开始从网上copy了这句创建用户。

db.createUser({user:"user",pwd:"password",roles:[{role:"read", db:"addressbook"},{role:"readWrite", db:"addressbook"},{role:"dbAdmin",db:"addressbook"},{role:"dbOwner",db:"addressbook"}]});

spring boot老是连接不上,报权限错误Command failed with error 13 (Unauthorized): 'not authorized on imapi to execute command

mongo compass却可以连接上,原因是springboot项目中有写入操作。因此去掉read权限,readWrite权限生效。

开启conf中的认证模式,重启启动mongodb生效。

springboot中的配置

mongoconfig.uri=mongodb://user:password@127.0.0.1:28018
mongoconfig.dbName=imapi
mongoconfig.mapPackage=cn.xyz.mianshi.vo
mongoconfig.roomDbName=imRoom
mongoconfig.username=user
mongoconfig.password=password
mongoconfig.connectTimeout=20000
mongoconfig.socketTimeout=20000
mongoconfig.maxWaitTime=20000

免责声明:文章转载自《mongodb创建用户密码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux shell脚本,按顺序批量启动多个jar包,批量启动spring cloud的jar包解决curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to raw.githubusercontent.com:443 错误下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python_way ,day26 django_admin 自定义

1、想在admin中增加新的字段如图:    默认django只显示 def __str__(self)里面的return的值 from django.contrib import admin # Register your models here. from accets import models class NewAssetApprovalZ...

mongodb的备份还原

一:备份数据库 G:Program FilesMongoDBServer3.0in>mongodump -d mydb -o g:/data/back mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径 如果没有用户,可以去掉-u和-p。如果导出本机的数据库,可以去掉-h。如果是默认端口,可...

不错的TOMCAT监控好工具probe

Tomcat版本:6.0.41 Probe版本:2.3.3 一,Tomcat没有默认用户账号,故首先需要添加Tomcat用户账号 修改$CATALINA_HOME/conf/tomcat-users.xml: <tomcat-users> <!-- 用户角色 --> <role rolename="manager"/>...

Linux Node 服务器基础布置流程

一、安装Node 1. 下载Linux二进制文件 可以下载(https://nodejs.org/zh-cn/download/)至本地电脑,再上传至服务器。  也可以直接在服务器上下载: wget https://nodejs.org/dist/v16.13.0/node-v16.13.0-linux-x64.tar.xz  2. 解压文件 假设压缩...

python测试开发django(33)--xadmin注册表信息

前言 xadmin后台如果要对表的内容增删改查,跟之前的admin.py文件里面写注册表信息一样,需在admin.py同一级目录新建一个adminx.py的文件。 然后在admin.py文件控制页面上需显示的内容。 models模块 models模块跟之前设计表是一样的,在models.py文件设计表的字段显示,以Studentts表为例。 # codin...

Golang 对MongoDB的操作简单封装

使用MongoDB的Go驱动库mgo,对MongoDB的操作做一下简单封装 初始化 操作没有用户权限的MongoDB var globalS *mgo.Session func init() { s, err := mgo.Dial(dialInfo) if err != nil { log.Fatalf("Create...