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

 

posted @ 2019-04-17 17:53  phoenix1630  阅读(2712)  评论(0编辑  收藏  举报