修复 Error: couldn’t add user: not authorized on oauth to execute command 问题

结合我前面的这篇文章 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
修复 Error: couldn’t add user: not authorized on oauth to execute command 问题
mongo 关闭认证

最后两行注释掉,然后重启 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 命令就可以看到,当前库的所有用户信息。

修复 Error: couldn’t add user: not authorized on oauth to execute command 问题
mongo show users 查看所有用户信息

创建和修改完用户的权限后,在编辑 vi /usr/local/etc/mongod.conf,开启 Mongo 认证,重启服务。虽然过程复杂,但是总比没有办法好!

修复 Error: couldn’t add user: not authorized on oauth to execute command 问题

: » 修复 Error: couldn’t add user: not authorized on oauth to execute command 问题

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/252169.html

(0)
上一篇 2022年5月4日
下一篇 2022年5月4日

相关推荐

发表回复

登录后才能评论