安装完mongodb后默认是没有用户的,也不需要授权登录。
连接mongodb,用 mongo.exe。
切换到admin数据库 use admin
使用创建用户命令:
use admin db.createUser( { user: "admin", pwd: "123456", roles: [ { role: "root", db: "admin" } ] } ) 验证用户,返回1成功,0失改 db.auth('admin','123456')
则对admin数据库添加了名为admin的用户(注:mongo为每一个数据库都提供了一套用户权限)
接着关闭数据库(注:当启动了授权认证,只有root角色有权限可以关闭数据库)
db.shutdownServer();
第二次登录启用授权认证:加--auth
扫描二维码关注公众号,回复:
534518 查看本文章
接着切换到admin数据库,使用查看用户命令
use admin
show users
将提示未授权
这时需要做授权认证
db.auth("admin","123456");
再调用刚才的命令则可以查看到用户信息
接着我们需要为我们的数据库添加相关用户,这里使用test为示例
use test db.createUser( { user: "test", pwd: "123456", roles: [ { role: "readWrite", db: "test" } ] } )
这里为test数据库添加了具有读写权限的角色
到此,mongo授权完成
2MongoDB 如果不配置登陆的情况是等于游客也是超级管理员的,但默认不支持外链接的
3基本的角色
userAdminAnyDatabase 这个角色拥有分配角色和用户的权限,但没有查写的缺陷
root 这是超级管理员
readWrite 有读写权限
read 有读权限
开始设置好用户直接重启,本地登录认证都ok,远程认证总是失败,网上找了各种资料,都没有进行说明,找了很久,终于发现一篇文章告诉mongodb3.0认证信息需要修改才能进行连接
修改命令如下,进入shell:
> use admin switched to db admin > var schema = db.system.version.findOne({"_id" : "authSchema"}) > schema.currentVersion = 3 3 > db.system.version.save(schema) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
在修改完成之后再创建用户。下面附带创建数据库用户的shell:
1 创建一个root用户:
use admin db.createUser( { user: "root", pwd: "123456", roles: [ "root" ] } )
2 创建admin用户
use admin db.createUser( { user: "admin", pwd: "admin", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
3 创建具体数据库的用户
use test db.createUser( { user: "test", pwd: "password", roles: [ { role: "userAdmin", db: "test" } ] } )
最后都要认证一下
db.auth("user", "pwd")
返回1代表成功,0代表失败。
db.createUser({user: "test4", pwd: "123456", roles: [{ role: "readWrite", db: "test" }]})
连接成功