1. 现象描述
在使用MongoDB时,我们经常需要在local数据库中创建用户,但有时候会遇到创建失败的情况,出现类似下面的错误提示:
Error: couldn't add user: not authorized on admin to execute command { createUser: "username",...
2. 解决方法
如果你遇到上面的错误提示,那么你需要按照以下步骤来解决:
2.1 查看用户权限
首先,我们需要查看当前MongoDB连接的用户是否拥有对local数据库的权限。这可以通过以下命令来实现:
mongo
use local
db.runCommand({whatsmyuri: true})
该命令将返回当前连接的用户和其权限。
2.2 增加权限
如果你发现连接的用户没有对local数据库的操作权限,那么你需要为该用户增加权限。你可以使用如下命令来实现:
mongo
use admin
db.createUser(
{
user: "username",
pwd: "password",
roles: [ { role: "root", db: "admin" }, { role: "readWrite", db: "local" } ]
}
)
该命令将创建一个名为username的用户,并赋予该用户对admin和local数据库的root和readWrite权限。
2.3 重新连接数据库
当你完成以上步骤后,你需要断开当前数据库连接,并重新连接。这可以通过以下命令来实现:
use admin
db.auth("username", "password")
该命令将使用刚刚创建的用户名和密码重新连接数据库。
2.4 创建用户
最后,你可以使用以下命令创建用户:
use local
db.createUser(
{
user: "username",
pwd: "password",
roles: [ { role: "readWrite", db: "local" } ]
}
)
该命令将创建一个名为username的用户,并赋予该用户对local数据库的readWrite权限。
3. 结论
在本篇文章中,我们介绍了解决在MongoDB中创建用户遇到的问题的方法。如果你遇到了该问题,可以尝试以上方法来解决。如果问题依然存在,请检查连接的用户是否拥有正确的权限,并尝试重新连接数据库。