本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
结合我前面的这篇文章 https://www.xttblog.com/?p=4609,今天在使用 Mongo 的时候又遇到了一个错误。全网搜索了很久,几乎没有答案。不得已,我走了回头路,算是把这个问题给解决了,在这里分享一下,避免更多的人入坑!
具体的异常信息如下所示:
2020-01-08T15:16:32.074+0800 E QUERY [js] uncaught exception: Error: couldn’t add user: not authorized on oauth to execute command { createUser: “xttblog”, pwd: “xxx”, roles: [ “readWrite”, “dbAdmin” ], digestPassword: true, writeConcern: { w: “majority”, wtimeout: 600000.0 }, lsid: { id: UUID(“e4ef2954-26bd-4e38-8c5c-222c417f053b”) }, $db: “oauth” } :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.createUser@src/mongo/shell/db.js:1370:11
@(shell):1:1
就是,我在 mongo 中新创建了一个数据库 oauth。然后给这个库创建用户,结果失败了。错误的大致意思是说,无法在没有认证的 oauth 库上执行创建用户的命令。
搜索了很久,没有答案。所以,不得已,我把 mongo 的数据库的配置给停止了。
brew services stop mongodb/brew/mongodb-community
然后修改配置文件。
vi /usr/local/etc/mongod.conf
最后两行注释掉,然后重启 mongo 的服务。
brew services start mongodb/brew/mongodb-community
重启完成后,我们连接上 mongo,重新创建用户,分配权限。
mongo
use oauth
db.createUser({
user:'xttblog',
pwd:'xttblog',
roles:[
{role:"readWrite",db:"oauth"},
{role:"userAdmin",db:"oauth"},
{role:"dbAdmin",db:"oauth"}
]
});
如果要一个账号管理两个库,则执行更新命令。
db.updateUser(
"admin",
{
roles:[
{role:"readWrite",db:"oauth"},
{role:"userAdmin",db:"oauth"},
{role:"dbAdmin",db:"oauth"},
{role:"readWrite",db:"log"},
{role:"userAdmin",db:"log"},
{role:"dbAdmin",db:"log"}
]
}
);
更新完成后,我们执行 show users 命令就可以看到,当前库的所有用户信息。
创建和修改完用户的权限后,在编辑 vi /usr/local/etc/mongod.conf,开启 Mongo 认证,重启服务。虽然过程复杂,但是总比没有办法好!
最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » 修复 Error: couldn’t add user: not authorized on oauth to execute command 问题