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

推荐阅读
  • ArcBlock 发布 ABT 节点 1.0.31 版本更新
    2020年11月9日,ArcBlock 区块链基础平台发布了 ABT 节点开发平台的1.0.31版本更新,此次更新带来了多项功能增强与性能优化。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • 新浪微博热搜暂停更新;即刻APP回归;Android 11 Beta版发布 | 科技新闻速递
    为您带来最新的科技资讯,涵盖社交媒体动态、软件更新及行业重大事件。CSDN携手您共同关注科技前沿。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • 一家位于长沙的知名网络安全企业,现面向全国诚聘高级后端开发工程师,特别欢迎具有一线城市经验的技术精英回归故乡,共创辉煌。 ... [详细]
  • 解决Win10 1709版本文件共享安全警告问题
    每当Windows 10发布新版本时,由于兼容性问题往往会出现各种故障。近期,一些用户在升级至1709版本后遇到了无法访问共享文件夹的问题,系统提示‘文件共享不安全,无法连接’。本文将提供多种解决方案,帮助您轻松解决这一难题。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 2023年,Android开发前景如何?25岁还能转行吗?
    近期,关于Android开发行业的讨论在多个平台上热度不减,许多人担忧其未来发展。本文将探讨当前Android开发市场的现状、薪资水平及职业选择建议。 ... [详细]
  • 在日常生活中,支付宝已成为不可或缺的支付工具之一。本文将详细介绍如何通过支付宝实现免费提现,帮助用户更好地管理个人财务,避免不必要的手续费支出。 ... [详细]
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
  • 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社区 版权所有