题目:MongoDB在系统数据库local中无法创建用户的解决办法
问题描述
在使用MongoDB时,有时候需要在local数据库中创建用户进行其他操作。但是在操作时,可能会遇到如下错误提示:
db.createUser({
"user" : "test_user",
"pwd" : "test_pwd",
"roles" : [ "readWrite" ]
});
{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { createUser: \"test_user\", pwd: \"xxx\", roles: [ { role: \"readWrite\", db: \"admin\" } ], digestPassword: false, writeConcern: { w: \"majority\", wtimeout: 600000.0 }, ordered: true }",
"code" : 13,
"codeName" : "Unauthorized"
}
这时候就无法在local数据库中创建用户。
解决办法
在使用MongoDB时,需要区分操作系统中的root用户和mongo中的root用户,两个用户没有关联性。
local数据库是MongoDB系统级的数据库,只有使用MongoDB的root用户或者是拥有__system权限的用户才有权限在local这个系统级的数据库中创建用户。
如果需要在local中创建用户,则需要按照以下操作进行操作:
-
进入MongoDB连接命令行
在系统命令行中输入:
mongo admin -u root -p your_password
输入密码后进入MongoDB连接界面
-
切换到local数据库
在MongoDB连接命令行中输入:
use local
切换到local数据库
- 创建用户
在local数据库中使用类似如下格式的命令创建用户:
db.createUser({
user: "test_user",
pwd: "password",
roles: [
{role: "readWrite", db: "test_db"}
]
})
其中,test_user为用户名,password为密码,test_db为需要授予用户读写权限的数据库名。
示例说明
示例1:使用系统管理员创建local用户
在MongoDB连接命令行中输入:
mongo admin -u root -p your_password
进入MongoDB连接命令行后使用如下命令:
use local
db.createUser({
user: "test_user",
pwd: "password",
roles: [
{role: "readWrite", db: "test_db"}
]
})
示例2:使用拥有__system权限的用户创建local用户
在MongoDB连接命令行中输入:
mongo admin -u system_user -p your_password authSource=admin
这里使用的是拥有__system权限的system_user用户,即在use local之前已经完成了授权。
进入MongoDB连接命令行后使用如下命令:
use local
db.createUser({
user: "test_user",
pwd: "password",
roles: [
{role: "readWrite", db: "test_db"}
]
})
以上就是针对MongoDB在系统数据库local中无法创建用户的解决办法的详细说明和示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MongoDB在系统数据库local中无法创建用户的解决办法 - Python技术站