windows系统,MongoDB开启用户验证登录的正确姿势
MongoDB默认安装并没有开启用户名密码登录,这样太不安全了,百度出来的开启验证登录的文章,对初次使用MongoDB的小白太不友好了,总结下经验,自己写一份指引。
1,我的安装路径是C:\Program Files\MongoDB\Server\4.0\bin
2,我是安装在window10系统下的
3,直接做成系统服务(哪程序员每次用下MongoDB还要手动开启的,这太不程序员了,程序员不就图个懒字嘛),在C:\Program Files\MongoDB\ 下创建一个记事本,命名为mongod.cfg写入以下配置内容,注意要设置日志的path和数据库的path,我是设置在D:\MongoDB\目录下的,目录要自己去建。
systemLog: destination: file path: "D:\MongoDB\log\mongo.log" logAppend: true storage: dbPath: "D:\MongoDB\db" journal: enabled: true security: authorization: "enabled" net: # bindIp: 127.0.0.1 bindIpAll: true port: 27017 setParameter: enableLocalhostAuthBypass: false
然后点开cmd,右键以管理员身份运行,输入
cd C:\Program Files\MongoDB\Server\4.0\bin
进入MongoDB目录,然后输入(有可能出错的情况是,cfg文件里面用tab去代替空格,会导致出错)
mongod --config "C:\Program Files\MongoDB\Server\mongod.cfg" --install --serviceName "MongoDB_Svr" --serviceDisplayName "MongoDB_Svr"
对应的删除系统服务的代码如下,直接在cmd窗口输入
sc delete MongoDB_Svr
注意,这时服务并没有启动,我们先不要启动服务,下面先添加管理员用户
4,打开CMD
cd C:\Program Files\MongoDB\Server\4.0\bin
然后开启一个无需验证用户的MongoDB服务
modgod --dbpath="D:\MongoDB\db"
然后这个cmd就留着,进入文件夹 C:\Program Files\MongoDB\Server\4.0\bin 双击 mongo.exe打开命令窗口
粘贴下面代码,运行
use admin db.createUser( { user: "myadmin", pwd: "123456", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
使用 db.system.users.find() 可查看所有用户
然后
db.auth("myadmin","123456")
假设你创建了一个TestDB的数据库,如果要设置这个数据库的用户
use TestDB db.createUser( { user: "phoenix", pwd: "123456789", roles: [ { role: "readWrite", db: "TestDB" }, ] } )
这样就能用phoenix 和 123456789登陆TestDB数据库了
其它可用的命令还有
删除用户db.dropUser("TestDB") 删除用户要注意的就是要到对应的数据库下删除用户。 查看数据库show dbs 开启服务=>cmd下运行net start MongoDB_Svr 停止服务=>cmd下运行net stop MongoDB_Svr
附:
mongodb内置角色: 1. 数据库用户角色:read、readWrite; 2. 数据库管理角色:dbAdmin、dbOwner、userAdmin; 3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 4. 备份恢复角色:backup、restore; 5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 6. 超级用户角色:root 7. 内部角色:__system