window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

时间:2021-11-30 13:56:54

最近公司有一个项目模块让用nosql-mongodb替换了,故,对mongodb做了一点研究,然后分享一下!

1.首先说一下安装时的坑

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

下载mongodb,如果你从官网下载,将会是一件很慢的事情,在公司我都没有下载下来,回家下载的。

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

安装的时候非常坑,此图是我已经安装好打开的,如果你第一次安装,请不要默认下一步一下步,注意左下角,在某 一步中,记得要取消那个对勾。

2.如果你成功安装上了mongodb,打开dos,输入mongo

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

3.如果你的报错了,那么请配置环境变量(如何配置我就不说了)

4.将mongod注册为Windows服务,并且让其服务器开机自动重新启动(这里详细记录一下)。

打开你mongodb安装的根目录

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

创建一个Data文件加,在Data文件夹里创建一个db文件夹再创建一个log文件夹

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

然后打开dos,进入mongo安装目录下的bin目录

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

然后执行关键性代码

mongod -dbpath "E:\MongoDb\Data\db" -logpath "E:\MongoDb\Data\log\MongoDB.lo
g" -install -serviceName "MongoDB

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

此代码便会将mongodb制作成windows的服务

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

删除MongoDB Service 

mongod -dbpath "E:\Work_App\MongoDB\Data\db" -logpath "E:\Work_App\MongoDB\Data\log\MongoDB.log" -remove -serviceName "MongoDB"

接下来开启服务

net start mongodb

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

接下来关闭服务

 net stop mongodb

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

下面说一下mongodb中,如何为其设置权限,同sqlserver,mysql一样,我们不和能让任何人都可以对我们的数据库进行修改的,所以必须得设置管理账户。

MongoDB数据库在默认是没有用户名及密码,不用安全验证的,只要连接上服务就可以进行CRUD操作。

第一部:开启安全性验证

如果需要给MongoDB数据库使用安全验证,则需要用--auth开启安全性检查,则只有数据库认证的用户才能执行读写操作,开户安全性检查,有两种方式:

第一种:重新创建window service服务器,在创建服务时打开安全性验证。

1. 首先使用管理员身份打开cmd.exe,启动cmd命令窗口。(注意路径根据你实际情况操作)

2.在窗口中输入mongod --auth --logpath "D:\Program Files\mongodb\data\log\MongoDB.log" --logappend --dbpath "D:\Program Files\mongodb\data\db" --directoryperdb --reinstall命令

mongod --auth --logpath "D:\Program Files\mongodb\data\log\MongoDB.log" --logappend --dbpath "D:\Program Files\mongodb\data\db" --directoryperdb --reinstall

第二种:直接开启安全性验证

1. 首先使用管理员身份打开cmd.exe,启动cmd命令窗口。

2. 在窗口中输入mongod --dbpath "D:\Program Files\mongodb\data\db" --logpath "D:\Program Files\mongodb\data\log\MongoDB.log" --auth

mongod --dbpath "D:\Program Files\mongodb\data\db" --logpath "D:\Program Files\mongodb\data\log\MongoDB.log" --auth

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

带有-auth参数时,必须通过认证才可以查询数据。如果没有加-auth参数,即使配置了安全认证用户,也不需要认证谁都可以操作。

第二部:创建用户

定位到E:\MongoDb\bin(mongodb安装根目录的bin下),使用mongo.exe进入mongodb的命令行管理。

键入命令:

>use admin

>db.addUser(“root”, “root”)

现在我们为mongodb的admin数据库添加一个用户root,密码也是root,mongodb可以为每个数据库都建立权限认证,也就是你可以指定某个用户可以登录到哪个数据库。上面的代码,我们为admin数据库添加了一个root用户,在mongodb中admin数据库是一个特别的数据库,这个数据库的用户,可以访问mongodb中的所有数据库。

如果你要为test数据库,设置一个用户,使用如下命令:

>use test

>db.addUser(“test”, “test”)

好了,现在我们已经为mongodb设置了一个全局用户root,接下来先重启mongodb,使创建的用户生效。

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

用户登录:

首先需要使用“use 数据库名称,如: use admin”跳转到当前数据库模式下,然后用户登录,如下:

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

这里没有指定管理用户成功,也就是刚才的db.addUser("xx","xx")这个命令是错误的,这个问题稍后再解决!

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

上面显示所有数据库名称,数据库大小。

system.user用户

每个数据库的用户账号都是以文档形式存储在system.users集合里面的, 
文档结构{'user':username, 'readOnly':true, 'pwd': password hash}。password hash是根据用户名和密码生成的散列。

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

查询某个数据库下的用户db.system.users.find(); 
删除某个数据库下的所有用户db.system.users.remove(),删除指定用户db.system.users.remove({'user':'用户名'})

补充:针对刚才那个设置权限失败的问题,是命令不对,再次更正一下!!!


MongoDB 缺省是没有设置鉴权的,业界大部分使用 MongoDB 的项目也没有设置访问权限。这就意味着只要知道 MongoDB 服务器的端口,任何能访问到这台服务器的人都可以查询和操作 MongoDB 数据库的内容。在一些项目当中,这种使用方式会被看成是一种安全漏洞。

本文介绍如何在单台 MongoDB 服务器上设置鉴权。设置完后,MongoDB 客户端必须用正确的用户名和密码登录,才能在指定的数据库中操作。

首先介绍下 MongoDB 的用户和权限。每个数据库都有自己的用户,创建用户的命令是db.createUser()(文档),当你创建一个用户时,该用户就属于你当前所在的数据库。

每个用户包含三个要素:用户名、密码和角色列表。下面是一个例子:

{
user: "dbuser",
pwd : "dbpass",
roles: ["readWrite", "clusterAdmin"]
}

这个例子表示一个名为dbuser的用户,它在当前的数据库中拥有 readWrite 和 clusterAdmin 两个角色。

--------------------------------------------------------------------------------------------------------------------------

MongoDB 内置了很多角色,但要注意,不是每个数据库的内置角色都一样。其中 admin 数据库就包含了一些其他数据库所没有的角色。

熟悉 Oracle 的童鞋们都知道,数据库用户有两种,一种是管理员,用来管理用户,一种是普通用户,用来访问数据。类似的,为 MongoDB 规划用户鉴权时,至少要规划两种角色:用户管理员和数据库用户。如果搭建了分片或主从,可能还会要规划数据库架构管理员的角色,它们专门用来调整数据库的分布式架构。

在创建用户之前,我们首先要修改 MongoDB 的启动方式。缺省方式下 MongoDB 是不进行鉴权检查的。我们只要在运行 MongoDB 的命令后面加上一个 --auth 参数即可,例如:

mongod --dbpath ./db1 --port 20000 --auth

如何创建用户管理员

用户管理员是第一个要创建的用户。在没有创建任何用户之前,你可以随意创建用户;但数据库中一旦有了用户,那么未登录的客户端就没有权限做任何操作了,除非使用db.auth(username, password)方法登录。

用户管理员的角色名叫 userAdminAnyDatabase,这个角色只能在 admin 数据库中创建。下面是一个例子:

> use admin
switched to db admin
> db.createUser({user:"root",pwd:"root123",roles:["userAdminAnyDatabase"]})
Successfully added user: { "user" : "root", "roles" : [ "userAdminAnyDatabase" ] }

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

这个例子创建了一个名为 root 的用户管理员。创建完了这个用户之后,我们应该马上以该用户的身份登录:

> db.auth("root","root123")
1
db.auth() 方法返回 1 表示登录成功。接下来我们为指定的数据库创建访问所需的账号。

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

--------------------------------------------------------------------------------------------------------------------------

如何创建数据库用户

首先保证你已经以用户管理员的身份登录 admin 数据库。然后用 use 命令切换到目标数据库,同样用 db.createUser() 命令来创建用户,其中角色名为 “readWrite”。

普通的数据库用户角色有两种,read 和 readWrite。顾名思义,前者只能读取数据不能修改,后者可以读取和修改。
下面是一个例子:

> use test
switched to db test
> db.createUser({user:"testuser",pwd:"testpass",roles:["readWrite"]})
Successfully added user: { "user" : "testuser", "roles" : [ "readWrite" ] }
> db.auth("testuser","testpass")
1

这样 MongoDB 的数据安全性就得到保障了,没有登录的客户端将无法执行任何命令。

【补充2:mongodb配置连接字符串】

MongoDB 标准连接字符串
mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]
注:并非所有MongoDB驱动都支持完整的连接字符串,不支持此格式连接字串的驱动会有替代连接方案,具体请参照驱动自身的说明文档。

 mongodb:// 是连接字串必须的前缀字串
 username:password@ 可选项,连接到数据库后会尝试验证登陆
 host1 必须的指定至少一个host
 :portX 可选项,默认连接到27017
 /database 如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开admin数据库。
 ?options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开

连接选项包括:
Replica set:
replicaSet=name
驱动会校验replica set的名字。意味着给定的hosts是主库(seed list),驱动将试图找到replica set中的所有成员。(•The driver verifies that the name of the replica set it connects to matches this name. Implies that the hosts given are a seed list, and the driver will attempt to find all members of the set.)

Single server:
slaveOk=true|false

*选项:
safe=true|false
 true: 驱动程序会在提交每次更新操作后执行getLastError命令以确认更新是有效的(参见w和wtimeoutMS)
 false:驱动程序在每次更新操作后不会执行getLastError
w=n
 驱动在getLastError命令加上{ w : n } 参数。意味着safe=true
wtimeoutMS=ms
 驱动在getLastError命令加上{ wtimeout : ms }参数。意味着safe=true.
fsync=true|false
 true: 驱动在getLastError命令加上{ fsync : true } 参数。意味着safe=true.
 false: 驱动不在getlasterror 命令加fsync参数。
journal=true|false
 true: 同步到 journal. 意味着safe=true.
connectTimeoutMS=ms
 设置建立连接超时,单位ms
socketTimeoutMS=ms
 设置socket发送或接受超时时间,单位ms

这些选项都是大小写不敏感的。

连接MongoDB(默认连接到localhost:27017)

使用用户fred和密码foobar连接

使用用户fred和密码foobar连接,指定数据库baz

连接到两台服务器组成的Replica Sets

mongodb://example.com:27017,example2.com:27017

连接到三台本地服务器组成的Replica Sets(分别使用27017、27018和27019端口)

mongodb://localhost,localhost:27018,localhost:27019

连接到三台服务器组成的Replica Sets,把所有写操作集中在主库,读操作分布在各丛库

mongodb://host1,host2,host3/?slaveOk=true

使用安全模式连接

安全模式下连接到一组Replica Sets,等待至少两台机器同步成功,并设置两秒的超时时间

mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000

连接池(Connection Pooling)
服务器每个TCP连接对应一个进程。强力推荐你在应用程序中实现自身的连接池。多数驱动程序也会在背后悄悄帮你做连接池。一个常见的例外是你的应用会为每个请求重新配置一个新进程譬如CGI和PHP。

这篇文章不谈mongodb的基本curd的操作,就到此为止了!


欢迎大家关注我都我的微信 公众号,公众号涨粉丝人数,就是你们对我的喜爱程度!

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置的更多相关文章

  1. handler 方法进不去,服务器上出现应用程序错误。此应用程序的当前自定义错误设置禁止远程查看

    HTTP/1.1 500 Internal Server ErrorCache-Control: privateContent-Type: text/html; charset=utf-8Server ...

  2. 如何在window服务器上搭建一个能代替ftp的传输工具

    通常对于服务器上的文件管理和数据传输都是利用ftp来实现,但随着存储技术的发展,数据资产的存储规模和复杂程度不断提高,传统的ftp传输显得有笨重.今天给大家介绍一款能够取代ftp的在线文档管理软件—— ...

  3. 在Linux服务器上使用Vbox安装虚拟机

    先去官网(www.virtualbox.org)上下载对应Linux系统的Vbox版本. 我这边用的是Oracle Linux 7系统(KDE安装) 使用rpm安装virtualbox 发现报错,按照 ...

  4. CentOS服务器上搭建Gitlab安装步骤、中文汉化详细步骤、日常管理以及异常故障排查

    一, 服务器快速搭建gitlab方法 可以参考gitlab中文社区 的教程centos7安装gitlab:https://www.gitlab.cc/downloads/#centos7centos6 ...

  5. window服务器上搭建git服务,window server git!!!

    先给大家看一个高大上的,这是我给我公司配置的,小伙伴们都说好! 阿里云的2012server 基于这篇大神的教程,我把服务端搭建好了. 传送门,当然我还是自己做个笔记的好. 1.下载java,并安装 ...

  6. 在Ubuntu 12 服务器上源码安装 OpenERP 8.0

    原文:http://vivianyw.blog.163.com/blog/static/134547422201421112349489/ 1. 安装SSH: sudo apt-get install ...

  7. Centos7服务器上RabbitMQ单机安装

    一.背景 最近项目中用到了RabbitMQ,但是发现自己本地没有安装,此文记录一下本地RabbitMQ的安装过程.注意不同的系统安装方式略有不同,此处我们记录的是Centos7的安装方式. 二.安装方 ...

  8. Tilera 服务器上OpenJDK的安装尝试

    一.起因 这两天比较有意思,客户那里的代码遇到了一个jvm的bug崩溃了,所以老板让我升级JVM,这是一个处理器架构和x86不同的处理器,我改怎么安装呢? 我百度了OpenJDK,并且按照http:/ ...

  9. linux服务器上软件的安装

    mysql数据库的安装 redis的安装 zookeeper的安装

随机推荐

  1. Myeclipse 安装离线adt的方法 ()

    方法一: 1.下载最新的adt插件ADT-10.0.1.zip (在MyEclipse 10.5 上安装的ADT插件是ADT 20.0.3离线包下载地址: http://dl.cr173.com//s ...

  2. SharePoint 中用户控件的开发及应用

    1.新建解决方案以及SharePoint项目,步骤比较简单略过,然后映射CONTROLTEMPLATES文件夹,在里面添加用户控件(仅场解决方案),如下图: 2.解决方案结构,如下图: 简单介绍一下, ...

  3. 读书list

    1. TCP/IP 1.1 图解 TCP/IP 1.2 TCP/IP 详解 2. HTTP 2.1 HTTP 权威指南

  4. Working with nil

    [Working with nil] It’s always a good idea to initialize scalar variables at the time you declare th ...

  5. jQuery Ajax应用

    jQuery Ajax应用 本章主要了解jQuery的Ajax与传统的Ajax的区别,掌握JQuery的Ajax常用的方法与Ajax相关的函数. 详细内容,请点击jQuery Ajax应用查看:

  6. hdu 4123 树形DP+RMQ

    http://acm.hdu.edu.cn/showproblem.php? pid=4123 Problem Description Bob wants to hold a race to enco ...

  7. 51 nod 1211 数独 DLX

    原题链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1211 调了挺久的,自己的一份舞蹈链模板…… 算是在网上见到的模 ...

  8. [摘译] IK: 操纵关节式物体的反向动力学和几何约束

    原文: INVERSE KINEMATICS AND GEOMETRIC CONSTRAINTS FOR ARTICULATED FIGURE MANIPULATION http://graphics ...

  9. C-Lodop设置页面一加载就打印

    C-Lodop由于是服务不是np插件,调用打印语句(print或preview等)时机太早,在页面第一次加载完成后有几百毫秒时间等待WebSocket通讯服务准备完成,在没完成的时候会提示“C-Lod ...

  10. CDC在sql server 2017中无法使用的问题

    Symptom === sp_MScdc_capture_job in the CDC job raised error message Msg 217, Level 16, State 1, Pro ...