程序需要在有auth认证的mongodb下运行eval函数或命令时提示无权限

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序需要在有auth认证的mongodb下运行eval函数或命令时提示无权限相关的知识,希望对你有一定的参考价值。

参考技术A mongodb本来是没有权限问题的,因为默认设置无用户无密码,
为了保障安全,需要手动设置一个账号和用户,这里不细谈如何创建有权限认证的mongodb账号(如mysql的root用户)
笔者用的是golang10.1+mongodb3.6,之前项目是不认证的程序,加了认证之后提示没有权限操作

那么首先在

连接地址处加上用户和密码(马赛克处是密码)

运行单元测试发现,增查删改功能正常,但是

eval函数还是说我没有授权

看了官网文档说

需要grant一个anyAction on anyResource的user

参考于

解决办法如下:
登录mongodb,执行以下命令:

其中yourusername和yourpassword是自己设置的用户和密码(这个用户前提是已经有了root权限)

问题解决。

mongodb第二篇文章~关于集群认证的那点事

集群认证
简介:上一篇咱们介绍了单实力的认证方式,正好我在搞lepus监控,副本集合需要用户认证
 一 验证方式:
  1 auth 方式启动=》单点
  2 keyFile 方式启动=》集群
  请注意 开户keyFile默认开户auth
二 创建keyFile文件
  1 创建要求
    1.内容 base64编码集[a-z A-Z +/]
    2.长度 1000bytes
    3.权限至少 chmod 600 keyFile
  2 创建方式
   openssl rand -base64 102 > .KeyFile
   chmod 600 .KeyFile(必须600权限,请注意)
三 创建超级管理员用户
   db.createUser( {
   user: "root",
   pwd: "123456",
   roles: [ { role: "root", db: "admin" } ]
  });
  目的:为了创建用户
四 修改
  1 关闭从mongo->然后关闭主mongo
  2 在配置启动项添加 keyFile=/data/mongo/shard2/.KeyFile(修改所有节点)
  3 将keyfile拷贝到所有节点
 4 启动主mongo->启动从mongo
五 验证
  mongo -uroot -p123456 admin --port=27015 、
 登录成功,代表完成
这就是我对mongo集群用户验证的一点理解






























以上是关于程序需要在有auth认证的mongodb下运行eval函数或命令时提示无权限的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB未授权访问漏洞复现及docker.mongodb下--auth授权验证

如何在linux中部署mongodb并设置连接认证

linux下安装mongodb

Mongodb集群加了安全认证后,如何判断是否认证成功

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

Mongodb 数据库的简单使用