记录一次Mongodb踩坑经验

一、现象

服务不能访问mongodb的数据

nacos配置:mongodb://use:password@XXXX:27017/zhqc-cloud-sso-admin?authSource=admin&authMechanism=SCRAM-SHA-1

报错:

Caused by: com.mongodb.MongoQueryException: Query failed with error code 13 and error message 'not authorized on XXX to execute command { find: "dyQueryTableBean", filter: { _id: "225668521588297728_456417333812920320_transportparkproject_top" }, limit: 1, singleBatch: true, $db: "zhqc-cloud-sso-admin", $readPreference: { mode: "primaryPreferred" } }' on server XXXX:27017

二、原因

1.检查用户

cd monogd的安装目录

然后执行use zhqc-cloud-sso-admin 数据库.

添加用户:db.createUser({user:"zhqc-cloud-sso-admin",pwd:"zhqc-cloud-sso-admin",roles:[{role:"dbAdmin",db:"zhqc-cloud-sso-admin"}]});

发现用户还是没有权限。

2.然后通过mongodb compass软件,访问mongodb数据。也是报类似的错。

3.接着就使用

db.createUser(
{
user:"mongo-blogis",
pwd:"blogis@123",
roles:[{role:"readWrite",db:"zhqc-cloud-sso-admin"}]
}
)

创建了一个新的用户,但是为readWrite,惊喜的发现可以查询数据。

此时,然后修改用户权限

db.grantRolesToUser('zhqc-cloud-sso-admin',[{role:'readWrite', db:'zhqc-cloud-sso-admin'}])

问题得到解决。

三、总结

服务引用mongodb:

uri: mongodb://user:password@ip:27017/数据库

可以使用软件:Mongodb Compass ,操作数据库添加db,colleciton,data

进入到mongdb 安装目录

cd /usr/local/mongodb/bin

./mongo 进入mongodb

use admin  使用admin数据库(默认就有数据库)

use sso-admin 使用sso-admin(不插入数据,不会创建,只有插入时,就会创建数据)

db.auth("root","root") 登录root用户名,密码为root

在zhqc-cloud-sso-admin数据库下添加用户

use zhqc-cloud-sso-admin

db.createUser({user:"zhqc-cloud-sso-admin",pwd:"zhqc-cloud-sso-admin",roles:["readWrite"]})

不能在非admin数据库下添加root用户,建议一般在非admin数据库添加readWrite用户。

修改用户密码

db.updateUser("zhqc-cloud-sso-admin",{pwd:"123456"})
删除用户

db.dropUser("zhqc-cloud-sso-admin")
查看当前数据库用户信息

show users;

查看当前数据库

show dbs;

给用户赋权限

db.grantRolesToUser('zhqc-cloud-sso-admin',[{role:'dbAdmin', db:'zhqc-cloud-sso-admin'}])

查看用户

db.getUser("zhqc-cloud-sso-admin")
root权限登录

添加数据

db.COLLECTION_NAME.insert(document)

db.Contacts.insert([{ name: "追逐时光者", phone: "15012454678" }, { name: "王亚", phone: "18687654321" }, { name: "大姚", phone: "13100001111" }, { name: "小袁", phone: "131054545541" }])

查看数据

db.COLLECTION_NAME.find()

更新数据:

db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } )

db.MyBooks.update({'bookName':'平方的世界'},{$set:{'bookName':'平凡的世界'}})

删除数据

db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } )

db.colection.remove({'title': 'MongoDB'})

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值