热门标签 | 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

推荐阅读
  • SQLite数据库CRUD操作实例分析与应用
    本文通过分析和实例演示了SQLite数据库中的CRUD(创建、读取、更新和删除)操作,详细介绍了如何在Java环境中使用Person实体类进行数据库操作。文章首先阐述了SQLite数据库的基本概念及其在移动应用开发中的重要性,然后通过具体的代码示例,逐步展示了如何实现对Person实体类的增删改查功能。此外,还讨论了常见错误及其解决方法,为开发者提供了实用的参考和指导。 ... [详细]
  • MongoDB核心概念与基础知识解析
    MongoDB 是一种基于分布式文件存储的非关系型数据库系统,主要采用 C++ 语言开发。本文将详细介绍 MongoDB 的核心概念和基础知识,包括其与传统 SQL 数据库的区别,数据库及集合的基本操作,如数据的插入、更新、删除和查询等。通过本文,读者可以全面了解 MongoDB 的基本功能及其应用场景。 ... [详细]
  • 在深入掌握Spring框架的事务管理之前,了解其背后的数据库事务基础至关重要。Spring的事务管理功能虽然强大且灵活,但其核心依赖于数据库自身的事务处理机制。因此,熟悉数据库事务的基本概念和特性是必不可少的。这包括事务的ACID属性、隔离级别以及常见的事务管理策略等。通过这些基础知识的学习,可以更好地理解和应用Spring中的事务管理配置。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 在Java分层设计模式中,典型的三层架构(3-tier application)将业务应用细分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种分层结构不仅有助于提高代码的可维护性和可扩展性,还能有效分离关注点,使各层职责更加明确。通过合理的设计和实现,三层架构能够显著提升系统的整体性能和稳定性。 ... [详细]
  • 提升Android开发效率:Clean Code的最佳实践与应用
    在Android开发中,提高代码质量和开发效率是至关重要的。本文介绍了如何通过Clean Code的最佳实践来优化Android应用的开发流程。以SQLite数据库操作为例,详细探讨了如何编写高效、可维护的SQL查询语句,并将其结果封装为Java对象。通过遵循这些最佳实践,开发者可以显著提升代码的可读性和可维护性,从而加快开发速度并减少错误。 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • 如何高效地安装并配置 PostgreSQL 数据库系统?本文将详细介绍从下载到安装、配置环境变量、初始化数据库、以及优化性能的全过程,帮助读者快速掌握 PostgreSQL 的核心操作与最佳实践。文章还涵盖了常见问题的解决方案,确保用户在部署过程中能够顺利解决遇到的各种挑战。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • MySQL数据库安装图文教程
    本文详细介绍了MySQL数据库的安装步骤。首先,用户需要打开已下载的MySQL安装文件,例如 `mysql-5.5.40-win32.msi`,并双击运行。接下来,在安装向导中选择安装类型,通常推荐选择“典型”安装选项,以确保大多数常用功能都能被正确安装。此外,文章还提供了详细的图文说明,帮助用户顺利完成整个安装过程,确保数据库系统能够稳定运行。 ... [详细]
  • 如何使用mysql_nd:Python连接MySQL数据库的优雅指南
    无论是进行机器学习、Web开发还是爬虫项目,数据库操作都是必不可少的一环。本文将详细介绍如何使用Python通过 `mysql_nd` 库与 MySQL 数据库进行高效连接和数据交互。内容涵盖以下几个方面: ... [详细]
  • 在拉斯维加斯举行的Interop 2011大会上,Bitcurrent的Alistair Croll发表了一场主题为“如何以云计算的视角进行思考”的演讲。该演讲深入探讨了传统IT思维与云计算思维之间的差异,并提出了在云计算环境下应具备的新思维方式。Croll强调了灵活性、可扩展性和成本效益等关键要素,以及如何通过这些要素来优化企业IT架构和运营。 ... [详细]
  • MySQL索引详解及其优化策略
    本文详细解析了MySQL索引的概念、数据结构及管理方法,并探讨了如何正确使用索引以提升查询性能。文章还深入讲解了联合索引与覆盖索引的应用场景,以及它们在优化数据库性能中的重要作用。此外,通过实例分析,进一步阐述了索引在高读写比系统中的必要性和优势。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
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社区 版权所有