win 下 Mongodb 设置账号密码方式!
默认的 mongodb 安装后,是没有账号密码,来到安装目录的 bin 目录下,直接 mongo 就可以访问数据库了,但是如果项目里面连接的是远程的数据库,想要改成连接本地数据库,方便测试倒腾,如果 mongodb.properties 文件里面没有用户名和密码,是不能连接到本地的,所以这里介绍下怎么给本地已经安装了 mongodb 的数据库设置账号和密码!
【重点先说:mongodb 设置账号密码和mysql不一样,它是可以给每一个数据库都设置一个账号密码的,但是在设置之前,要先给 system 下的 admin 数据库先设置账号密码才可以给其他的数据库设置!这一点很重要,否则会失败!!】
(1)先建一个文件夹来存放数据文件,我建立在 D:\mongodb\data 下
(2)开启 win 的 MongoDB 服务,命令行下来到 bin 目录,先不用账号密码登陆
D:\mongodb\bin>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:\mongodb\bin>mongod --dbpath D:\mongodb\data --auth
(8)通过以上操作,就成功了!但是这个 cmd 窗口不可以关闭!win 本地的 mongodb 也不需要去开启,这个 cmd 窗口就相当于一个开了权限的 win 服务,如果关闭这个窗口,去使用 win 的本地 mongodb 服务,则 mongodb 数据库又可以不需要账号密码登陆了。保留这个 cmd 窗口后,重新打开一个 cmd 窗口,来到 mongodb 安装目录的 bin 目录下,使用 mongo 登陆,出现如下:
D:\mongodb\bin>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:\mongodb\logs\mongo.log" --logappend --dbpath "E:\mongodb\data\db" --directoryperdb --reinstall
"MongoDB" --remove
【结束】
备注:如果上面的操作,导致服务启动不了,可以用下面的两句,删除服务,再试!
//添加服务
mongod --logpath "E:\mongodb\logs\mongo.log" --logappend --dbpath "E:\mongodb\data\db" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install
//删除服务
mongod --logpath "E:\mongodb\logs\mongo.log" --logappend --dbpath "E:\mongodb\data\db" --directoryperdb --serviceName "MongoDB" --serviceDisplayName
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通