[27]mongoDB身份验证(not authorized on admin to execute command)

超级管理员

为了更安全的访问mongodb,需要访问者提供用户名和密码,于是需要在mongodb中创建用户

采用了角色-用户-数据库的安全管理方式

常用系统角色如下:
root:只在admin数据库中可用,超级账号,超级权限
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库

创建超级管理用户

use admin
db.createUser({
    user:'admin',
    pwd:'123',
    roles:[{role:'root',db:'admin'}]
})
ubuntu环境下

修改/etc/mongodb.conf,设置auth=true

sudo vim /etc/mongodb.conf

/etc/mongodb.conf文件中本来就有配置auth=true,只需要删除前面的“#”即可。

重启MongoDB
service mongodb stop  #停止MongoDB服务(因为MongoDB是随开机是自启动的)
sudo service mongodb start #开启MongoDB服务

1.png
上图提示你,未授权的管理员执行命令,显然安全验证检查开启成功了,此时你应该这样连接:mongo admin -u root -p 123456
或者你也可以这样去验证(前提是必须进入该用户对应的database才行,出现1代表成功):
2.png

windos环境下
  • 创建管理员之后:
  • 然后重新启动mongodb,但是必须加上--auth选项,将.bat文件的内容修改为:mongod --auth --dbpath D:\软件安装\MongoDB\data\db

Mongodb报错:“not authorized on admin to execute command

Mongodb默认是不需要用户密码就可以连接的,如果使用命令报错"not authorized on admin to execute command ",则表示当前登陆用户不具备相应权限;

解决办法:通过创建一个用户,赋予用户root权限
注意:在createUser之前先use admin切换一下。

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

添加用户权限成功之后,使用root用户登陆,再次使用命令即可成功

附:添加用户时各个角色对应权限

1.数据库用户角色:read、readWrite;
2.数据库管理角色:dbAdmin、dbOwner、userAdmin;
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4.备份恢复角色:backup、restore
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6.超级用户角色:root

参考:https://blog.csdn.net/qq_40389276/article/details/99709890

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周小董

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值