程序需要在有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授权验证