Robomongo
是一款很好用的mongodb管理工具,界面简单友好并且开源免费。目前最新版本为0.8.5。
但是最近把mongodb升级到3.x版本后发现这个工具无法进行权限认证并连接数据库了。
最后在官网发现robomongo0.8.5版本不支持mongodb3.x的“SCRAM-SHA-1”加密方法。作者将在0.9.x版本中进行修复。
那么如何让mongodb3.x也能通过robomongo0.8.5进行认证连接呢?
首先,启动服务的时候把“–auth”参数去掉,这样我们就可以在不认证的情况下连接mongodb。
连接上mongodb后,执行以下语句:
1 | // Use MongoDB 2.6 auth schema (default auth mechanism: MONGODB-CR) |
上面命令行的作用就是让mongodb使用“MONGODB-CR”的方法进行加密,而不是使用“SCRAM-SHA-1”的方式。
其中的currentVersion:3为使用“MONGODB-CR”,值为5时使用“SCRAM-SHA-1”。
这样的话,就可以在robomongo0.8.5中使用mongodb3.x了。
但是这样会有另一个问题,就是之前的加密用户仍然使用的是“SCRAM-SHA-1”进行加密的,这时候需要对已加密的用户修改加密方式并重新生成密码。
下面查找所有用“SCRAM-SHA-1”加密的用户:
1 | use admin; |
然后把查找到的用户进行密码修改。
1 | db.changeUserPassword() |
当然还有一个更加暴力的方法,就是直接干掉所有的用户,然后使用createUser创建新的用户。
创建“admin”管理者,此用户只能是用来管理用户的,不能作为操作数据库。
1 | use admin #切换到admin数据库 |
针对不同的数据库,添加不同的操作者,并且可以给操作者赋值不同的权限,例如:readWrite(读写)、read(读)等。
1 | use demo #切换到demo数据库 |
修改完成之后,记得加上“–auth”参数并重启服务器。