win 下 Mongodb 设置账号密码方式!

默认的 mongodb 安装后,是没有账号密码,来到安装目录的 bin 目录下,直接 mongo 就可以访问数据库了,但是如果项目里面连接的是远程的数据库,想要改成连接本地数据库,方便测试倒腾,如果 mongodb.properties 文件里面没有用户名和密码,是不能连接到本地的,所以这里介绍下怎么给本地已经安装了 mongodb 的数据库设置账号和密码!

【重点先说:mongodb 设置账号密码和mysql不一样,它是可以给每一个数据库都设置一个账号密码的,但是在设置之前,要先给 system 下的 admin 数据库先设置账号密码才可以给其他的数据库设置!这一点很重要,否则会失败!!】

(1)先建一个文件夹来存放数据文件,我建立在 D:mongodbdata 下

(2)开启 win 的 MongoDB 服务,命令行下来到 bin 目录,先不用账号密码登陆

D:mongodbin>mongo

(3)切换到 admin 数据库

> use admin
switched to db admin

(4)给 admin 设置用户密码(成功返回如下)

> db.createUser({user: 'root', pwd: '1234', roles: ['root']})
Successfully added user:{"user":"root","roles":["root"]}

(5)接下来就可以给特定数据库设置账号密码了,假如现在有一个数据库,名为:imaiduo,先切换到该数据库下

> use imaiduo
switched to db admin

(6)开始给 imaiduo 数据库添加账号密码

> db.createUser({user:"root",pwd:"1234",roles:[{role:"readWrite",db:"imaiduo"}]})
Successfully added user:{
  "user":"root",
  "roles":[{
    {
      "role":"readWrite",
      "db":"imaiduo"
    }
  }]
}

解释下:

user :要设置的账号(可以和 admin 一样,没关系)

pwd :要设置的密码

roles :权限的意思

role :读写权限(这里是这两个权限都给)

db :给哪个数据库设置权限

(7)以上设置好后,MongoDB 默认是没有开启访问控制权限的,要通过 --auth 参数重启 mongodb 服务,这个时候注意!!要把 win 本地的 mongodb 服务先停用掉!然后来到 bin 目录下:

D:mongodbin>mongod --dbpath D:mongodbdata --auth

(8)通过以上操作,就成功了!但是这个 cmd 窗口不可以关闭!win 本地的 mongodb 也不需要去开启,这个 cmd 窗口就相当于一个开了权限的 win 服务,如果关闭这个窗口,去使用 win 的本地 mongodb 服务,则 mongodb 数据库又可以不需要账号密码登陆了。保留这个 cmd 窗口后,重新打开一个 cmd 窗口,来到 mongodb 安装目录的 bin 目录下,使用 mongo 登陆,出现如下:

D:mongodbin>mongo
MongoDB shell version v3.6.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.2
>

(9)然后先指定数据库:

> use imaiduo
switched to db imaiduo

(10)这个时候如果直接使用命令查看该数据库下有多少集合,会无法访问:

> show collections
2018-12-05T15:26:07.726+0800 E QUERY    [thread1] Error: listCollections failed: {
        "ok" : 0,
        "errmsg" : "not authorized on imaiduo to execute command { listCollections: 1.0, filter: {}, $db: "imaiduo" }",
        "code" : 13,
        "codeName" : "Unauthorized"
} :

(11)这个时候使用:

> db.auth("root","1234")
1

1 :代表验证成功!

0 :代表不成功!

(12)然后再使用命令就可以操作了!到此结束

最后:可以通过重新设置一下 win 的本地 mongodb 服务,然后通过开启 win 的本地服务,就不需要多使用一个 cmd 窗口了

重设需要账号密码的服务:

//添加密码后设置的服务,存在原来的服务,会先删除再重新加
mongod --auth --logpath "E:mongodblogsmongo.log" --logappend --dbpath "E:mongodbdatadb" --directoryperdb --reinstall

"MongoDB" --remove

【结束】

备注:如果上面的操作,导致服务启动不了,可以用下面的两句,删除服务,再试!

//添加服务
mongod --logpath "E:mongodblogsmongo.log" --logappend --dbpath "E:mongodbdatadb" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

//删除服务
mongod --logpath "E:mongodblogsmongo.log" --logappend --dbpath "E:mongodbdatadb" --directoryperdb --serviceName "MongoDB" --serviceDisplayName

原文地址:https://www.cnblogs.com/xuehuashanghe/p/10071234.html