之前项目连接的Mongodb都是空口令的,即没有用户名和密码就能直接连接上,然后突然接到一个需求,需要用户名密码登录,空口令不安全,以下是我的修改方案以后遇到的问题:
将原来的mongo url为:mongodb://xx.xx.xxx.xxx:xxxxx/dbName
改为:mongodb://userName:password@xx.xx.xxx.xxx:xxxx/dbName
同时在mongo服务器中将dbName这个数据库设置了用户名(userName)和密码(password)
但是在项目执行的时候报了
not authorized on test to execute command mongo这个错,即及时给dbName分配了用户名密码但是还是没有权限执行先关操作
然后就参考了下面一个博主的文章并且解决了这个问题:
http://www.voidcn.com/article/p-stetasvk-bhr.html
主要步骤是:
在mongo中,先切换到admin用户,然后执行命令创建一个角色:
db.createRole({role:'sysadmin',roles:[],privileges:[{resource:{anyResource:true},actions:['anyAction']}]})
接着再切换到当前所需使用的dbName数据库,执行命令新建一个用户,使用这个角色,注意,这个角色的db是admin:
db.createUser({user:'abc', pwd:'123',roles:[{role: 'sysadmin',db:'admin'}]})
再次运行代码,代码报错消失