结合我前面的这篇文章 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 认证,重启服务。虽然过程复杂,但是总比没有办法好!
: » 修复 Error: couldn’t add user: not authorized on oauth to execute command 问题
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/252169.html