bin目录下的mongod.cfg是服务器的配置文件,文件中主要的配置参数:
1、数据库文件的存放位置
2、服务器日志文件的存放位置
3、默认的IP地址、端口号
默认情况下,MongoDB的服务器地址是127.0.0.1,端口号是27017,存储数据库管理员信息的admin数据库是空的,即没有管理员账户,任何客户端可以直接连接服务器,不需要认证。
好处是,用户可以即时上手,不用担心被一堆配置弄的心烦意乱。坏处是,所有人都可以直接访问并修改数据库数据。
1、使用admin数据库,创建一个管理员账户
use admin
db.createUser({user:"chy",pwd:"abc",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
会提示创建成功。role指定账户角色(权限),db指定此账户管理的是哪个db。因为是roles:[],数组,所以可同时设置多个role。
如果是role中带有AnyDatabase,则可管理所有数据库。
如果role中不带AnyDatabase,则只能管理指定的db。
不管是哪种,这个账户只能进入指定的db。比如权限指定为"userAdminAnyDatabase",db指定为"admin",此账户只能通过数据库admin的验证,不能通过其他数据库的验证。要进入admin数据库后,在admin数据库中管理所有数据库。
"userAdminAnyDatabase"是管理所有数据库,可进行删除某个数据库之类的操作,是管理,并不能对某个数据库进行读写。
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
7. 内部角色:__system
2、修改配置文件mongod.cfg,使用密码。
我们看到默认是注释了的,不使用安全验证。
取消注释,修改如下:
注意空格、缩进,authorization冒号后面有一个空格。
security:
authorization: enabled
3、重启MongoDB服务。
4、
exit //先退出客户端
mongo
use admin
db.auth("username","password") //验证密码。1表示通过验证,0表示不通过。
刚才创建的账户可进入所有db。可创建某个db的账户。
db.createUser({user:‘chy1‘,pwd:‘abc1‘,roles:[{role:‘readWrite‘,db:‘test‘}]})
读写权限,此账户只能操作数据库test,且只能对test进行读写。
创建好之后就可以使用 mongodb://username:password@host[:port]/database 进行连接了(需要先 mongo 进入客户端 )。
注意:
原文:https://www.cnblogs.com/chy18883701161/p/11100589.html