热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MongoDB数据库安装和配置

欢迎关注我的微信公众号“人小路远”哦,在这里我将会记录自己日常学习的点滴收获与大家分享,以后也可能会定期记录一下自己在外读博的所见所闻,希

欢迎关注我的微信公众号“人小路远”哦,在这里我将会记录自己日常学习的点滴收获与大家分享,以后也可能会定期记录一下自己在外读博的所见所闻,希望大家喜欢,感谢支持! 



自己在家捣鼓数据库玩的时候发现MongoDB使用起来还是有很多需要注意和值得学习的地方的,怕自己鼓捣两天就玩忘了,所以写下这篇文章备忘并和大家共享。

目录

1、MongoDB安装

1.1、下载安装包

1.2、安装

1.3、进入安装目录

1.4、启动MongoDB

2、添加用户权限和身份验证

2.1、创建管理员

2.1.1、创建用户名和密码

2.1.2、开启身份验证

 2.1.3、用户身份验证

2.2、 创建普通用户

2.3、 内建角色

3、常用命令

4、连接远程MongoDB数据库

4.1、配置远程数据库

4.2、连接远程数据库

5、连接数据库




1、MongoDB安装


1.1、下载安装包

点击官网community版下载地址,选择系统和版本号后下载ZIP或MSI版本均可。此处以MSI版本为例:


1.2、安装

需要注意两个地方,选择Custom版本,取消compass复选框以节约时间。

  

 如果是安装在了默认的C盘,那就记得在C盘的根目录下新建data文件夹,然后再data文件夹下再新建一个db文件夹以存储数据库数据。如果是D盘那就在D盘的根目录下新建。


1.3、进入安装目录

解压或者安装完成后,需找到安装目录,在bin文件夹下打开命令行窗口。因为MongoDB不会默认将工具添加至系统变量,所以为以后方便使用建议自行将常用的mongo.exe和mongod.exe添加至系统变量。


1.4、启动MongoDB

在任务管理器中启动MongoDB服务即可,一般会自动启动。默认端口为27017。

在bin目录下打开命令行窗口,输入mongo进入MongoDB shell,即可进入数据库。


2、添加用户权限和身份验证

为提高数据库的安全性,防止被恶意篡改数据或操作失误导致数据丢失,建议添加用户权限和身份认证。

参考文章:


  • MongoDB 设置用户名密码登录
  • 设置远程连接访问mongodb数据库
  • MongoDB authentication failed

2.1、创建管理员


2.1.1、创建用户名和密码

在bin目录下另外打开一个命令行窗口,输入mongo进入MongoDB shell,然后使用MongoDB shell进入默认的admin数据库。

use admin

输入以下命令,添加root超级管理员。设置管理员root为用户名,rootPass为密码,admin为数据库名,

db.createUser({user: "root",pwd: "rootPass",roles: [ { role: "root", db: "admin" } ]}
)

注意一定要先在默认的admin数据库中添加root用户。如果admin库没有任何用户的话,即使在其他数据库中创建了用户,启用身份验证,默认的连接方式依然会有超级权限。如果admin数据库中未添加root用户,其他用户身份验证连接可能会失败。

创建成功后按下Ctrl+C键以断开数据库连接。


2.1.2、开启身份验证

(1)在注册表regedit-> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services->MongoDB 中添加-auth

(2)任务管理器中重启MongoDB服务即可。


 2.1.3、用户身份验证

方法一:连接时直接指定用户名、密码和数据库名。

mongo -u "adminUser" -p "adminPass" "DATABASE_NAME"

方法二:先连接数据库,再验证身份。

mongouse admindb.auth("adminUser", "adminPass")
// 输出 1 表示验证成功

2.2、 创建普通用户

过程类似创建管理员账户,只是 role 有所不同。先在admin数据库中使用root账户登录,之后按需创建即可,例如:


  • 用户名:simpleUser
  • 密码:simplePass
  • 权限:读写数据库 foo, 只读数据库 bar

db.createUser({user: "simpleUser",pwd: "simplePass",roles: [ { role: "readWrite", db: "foo" },{ role: "read", db: "bar" } ]}
)

2.3、 内建角色


  • Read:允许用户读取指定数据库
  • readWrite:允许用户读写指定数据库
  • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  • userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
  • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
  • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
  • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
  • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
  • root:只在admin数据库中可用。超级账号,超级权限

3、常用命令

显示当前数据库

db

显示所有数据库(新建的数据库需要至少插入一条数据才可显示)

show dbs

新建或切换至数据库xxx

use DATABASE_NAME

当前数据库下新建表xxx

db.createCollection("TABLE_NAME")

显示当前数据库下的所有表

show collections

当前数据库下指定表里插入一行数据

db.TABLE_NAME.insertOne({name:'xxx'}) //字段名name 数据xxx

当前数据库下指定表里查找数据

db.TABLE_NAME.find()

删除当前数据库

db.dropDatabase()

删除指定表

db.TABLE_NAME.drop()

4、连接远程MongoDB数据库

如果无需连接远程数据库,则可直接跳至第5步。


4.1、配置远程数据库

当我们想要连接服务器上的MongoDB数据库时,需要先对其进行配置。

(1)找到远程数据库的安装目录后,用记事本打开bin文件夹下的mongod.cfg文件,将bindIp后面的"127.0.0.1"改为"0.0.0.0"。然后任务管理器中重启MongoDB服务即可。

(2)一定要记得打开服务器防火墙的27017端口,如果是云服务器,一般不用在系统内打开端口,只要在服务器控制台添加安全规则打开端口就可以了。


4.2、连接远程数据库

建议先使用Telnet工具测试一下远程服务器是否可以正常连接。用法详见百度经验 telnet用法 测试端口号

telnet your.machine.open.ip 27017

在本机MongoDB安装目录的bin文件下,使用命令行进行连接。

建议先连接再认证,直接输入用户名和密码以及数据库进行连接有时会认证失败,不清楚是什么原因。

.\mongo your.db.ip.addressuse DATABASE_NAMEdb.auth("username","password")

5、连接数据库

使用MongoDB shell 连接数据库或者在代码中使用以下URI 形式对数据库进行连接。

mongodb://your.db.ip.address:27017/DATABASE_NAME

添加用户名密码验证

mongodb://simpleUser:simplePass@your.db.ip.address:27017/DATABASE_NAME

推荐阅读
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 本文探讨了高质量C/C++编程的最佳实践,并详细分析了常见的内存错误及其解决方案。通过深入理解内存管理和故障排除技巧,开发者可以编写更健壮的程序。 ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 本文深入探讨了计算机网络的基础概念和关键协议,帮助初学者掌握网络编程的必备知识。从网络结构到分层模型,再到传输层协议和IP地址分类,文章全面覆盖了网络编程的核心内容。 ... [详细]
  • 深入理解Shell脚本编程
    本文详细介绍了Shell脚本编程的基础概念、语法结构及其在操作系统中的应用。通过具体的示例代码,帮助读者掌握如何编写和执行Shell脚本。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 在众多不为人知的软件中,这些工具凭借其卓越的功能和高效的性能脱颖而出。本文将为您详细介绍其中八款精品软件,帮助您提高工作效率。 ... [详细]
author-avatar
qiuyaji4379
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有