今天重新安装了MongoDB(Windows),并且想要把它配置成需要验证用户密码的服务。
1.官网上获取msi文件并安装
MongoDB社区版
下载完成后直接运行msi文件
注意要选择custom
之后就一直next即可(记得不要勾选install compass【图形化工具】,勾选的话安装很慢)
本人是安装到D:/MongoDB文件夹
测试验证:
win+R再输入cmd
进入MongoDB目录的bin文件夹
执行如下命令 mongod.exe –dbpath D:\MongoDB\data
注意图片与我的命令有出入,但是大致意思是这样(原因是这图是我参考别人的,路径有出入)
如果执行成功之后回显示如下信息:
27017是mongodb的默认端口 可通过浏览器输入网址测试是否成功: 127.0.0.1:27017 安装成功之后访问会显示该提示
以上已经安装成功MongoDB
参考文章:https://blog.csdn.net/pizi995/article/details/53171139
配置环境变量
原因:不配置环境变量的话每次要启动MongoDB服务时候都要进入到MongoDB目录的bin目录中执行mongod.exe文件
今天我们说一下如何配置MongoDB的环境变量及好处,因为每次我们启动MongoDB服务的时候
都需要在黑窗口(dos窗口)中切换到MongoDB所在路径,然后执行 net start mongodb(代表已经安装了window服务) 命令来开
启服务。所以每次手动开机开启MongoDB服务的时候都特别的麻烦,为了解决这个问题。我们可以
将MongoDB配置到系统环境变量中。 下次在开机的时候可以直接打开黑窗口或者以管理员身份打
开(dos窗口)输入 net start mongodb(安装服务会稍后讲解) 命令,无需切换到MongoDB所在路径进行启动。
将你的 bin 目录加入到环境变量中的path中,保存退出。
验证:在控制台输入mongod –help会有帮助文档
分两步走
1.新建系统变量MONGODB_HOME
2.在系统变量加上%MONGODB_HOME%\bin
参考链接:https://blog.csdn.net/pizi995/article/details/53171851
到这里你就可以在任何路径下启动MongoDB服务器了。
接下来我们将mongodb放到windows的服务中
认识两个命令
删除windows服务
sc delete servicename(doc窗口下)
新建MongoDB的Windows服务
mongod.exe –logpath d:/MongoDB/log/mongodb.log –logappend –dbpath d:/MongoDB/data –directoryperdb –auth –serviceName MongoDB –install
参数解析
–install:安装MongoDB服务
–logappend:以每天为单位自动切割日志
–serviceName:安装Windows服务时使用的服务名
–logpath:MongoDB日志输出文件名称。虽说该参数直译是“日志路径”,其实要指定的是一个具体的完整文件名。
–dbpath:指定MongoDB数据存放的路径。这个就是最关键的参数了,不仅该目录要存在,并且最好不要以“\”结尾。
–directoryperdb:这个参数很好理解,让MongoDB按照数据库的不同,针对每一个数据库都建立一个目录,所谓的“目录每数据库”。
–auth:开启验证的服务,即需要登录验证
完成后打开服务后 (win+R->services.msc) 发现 MongoDB 已经在我们的服务项中了
若安装成功,在管理服务中会新增一个MongoDB服务并且能够启动成功。、
若这个服务新建成功,对特定的数据库需要特定的用户才能操作
安装完成并启动服务后再任何路径下输入mongo皆可进入MongoDB shell
安装完Windows服务后,
需要新增管理用户
需要创建一个用户在admin数据库中,它的权限用来新增或者赋予别的用户对别的数据库的操作权限
1.use admin(转到admin库)
2.新增数据库管理员
db.createUser(
{
user: “mama”,
pwd: “123456”,
roles: [ { role: “userAdminAnyDatabase”, db: “admin” } ]
}
)
role的可选值与解析
具体角色:
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
3.验证
db.auth(‘mama’,’123456’)
注意我们创建的mama这个角色时针对admin库的,他没有权限操作admin以外的数据库。即数据库是跟着用户走的。而且他也只能拥有管理创建用户的权限,没有查看用户的权限即查看admin库中的collection的权限,不过root权限用户有
mama角色无法查看admin下的collection
root无法连接到littleblog数据库
以下为用mongoose连接MongoDB
//数据库连接
var mongoose = require('mongoose');
var config={mongodb:'mongodb://leo:[email protected]:27017/littleblog'};
//leo为账号 123456为密码,littleblog为数据库名称
mongoose.connect(config.mongodb, { useNewUrlParser: true }, function(error) {
//这个回调怎么都会执行,但是error可能是null
// if error is truthy, the initial connection failed.
if (error) {
console.log('error');
}
});
var db = mongoose.connection;
db.on("error", function(error) {
console.log(error);
throw error;
});
db.on("open", function(error) {
if (error) {
console.log(error);
throw error;
}
console.log("db connect success.");
});
整个过程遇到的问题
1.启动MongoBD时报错:window不能再本地计算机启动MongoDB,如下:
解决:D:\MongoDB\data目录下全部删除
2.另一种方式新建windows服务(不成功,倘若哪位大神知道解决方法,恳请告知小弟)
1.D:\MongoDB\bin下新建一个mongodb.conf文件
内容如下:
#数据库数据存放目录
dbpath= D:\MongoDB\data
#数据库日志存放目录
logpath=D:\MongoDB\log\mongodb.log
#以追加的方式记录日志
logappend = true
#端口号 默认为27017
port=27017
#以后台方式运行进程
fork=true
#开启用户认证
auth=true
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true
参考:https://www.jianshu.com/p/5844fdfa9511
2.新建服务的命令为
sc create MongoDB binPath="D:\MongoDB\bin\mongod.exe --service --config=D:\MongoDB\bin\mongodb.conf"
结果:能创建成功,但是services.msc中启动不了服务
报 参数错误
其他参考文章(注以下文章只是参考帮助理解,并没有按照其步骤完全执行)
https://www.imooc.com/article/28742?block_id=tuijian_wz
https://blog.csdn.net/woainimax/article/details/78208588
https://yq.aliyun.com/articles/70338