MongoDB【部署 03】Windows系统安装mongodb并设置用户名密码(无需安装mongosh)及SpringBoot集成报错 Command failed with error 18

简介: MongoDB【部署 03】Windows系统安装mongodb并设置用户名密码(无需安装mongosh)及SpringBoot集成报错 Command failed with error 18

1.下载安装

1.1 下载

官网下载地址会根据系统检测安装包:

Windows安装的版本跟【部署 02】里的版本保持一致。

1.2 安装

双击下载的安装包mongodb-windows-x86_64-6.0.10-signed.msi即可开始安装:

MongoDB的Windows安装程序通常提供了以下组件和选项:

  1. Server(服务器):MongoDB数据库服务器,是MongoDB的核心组件。它负责存储和管理数据,处理客户端的请求,并提供与MongoDB数据库的交互。安装服务器组件是安装MongoDB的必要部分。
  2. Router(路由器,也称为mongos):MongoDB路由器,通常称为mongos,是MongoDB的分片组件。它用于将客户端的请求路由到MongoDB分片群集中的相应分片。在具有分片群集的MongoDB部署中使用mongos非常重要,但在简单的非分片部署中可能不需要安装。
  3. Miscellaneous Tools(各种工具):这个选项通常包含了MongoDB的各种辅助工具和实用程序,这些工具可以帮助你管理MongoDB数据库和执行各种任务。其中包括:
  • mongoimport:用于将数据导入MongoDB数据库的工具。
  • mongoexport:用于将数据从MongoDB数据库导出的工具。
  • mongodump:用于备份MongoDB数据库的工具。
  • mongorestore:用于还原MongoDB备份的工具。
  • mongostat:用于监视MongoDB服务器状态的工具。
  • 等等…

根据你的需求和MongoDB部署的性质,你可以选择安装或不安装这些附加工具。通常,如果你只需要MongoDB的核心数据库服务器,并且不需要分片功能或其他高级功能,那么只安装服务器组件就足够了。如果你需要进行数据导入导出、备份还原等任务,那么安装各种工具将非常有用。

本次安装仅安装Server且不需要安装MongoShell,点击下一步,设置数据和日志目录【也可以通过配置文件进行修改】:

【安装比较耗时,如果有可视化工具比如Navicat】可以勾选掉 MongoDB Compass:

点击下一步,等待安装成功:

  • 安装成功后可以在系统服务里看的MongoDB服务

  • 或在浏览器里输入localhost:27017查看

2.设置用户名密码

2.1 找到配置文件

根据官网的说明找到配置文件:

配置文件里的配置项可查看官网详细说明文档

默认配置文档内容:

storage:
  directoryPerDB: true
  dbPath: D:\Program Files\MongoDB\Server\6.0\data
  journal:
    enabled: true
systemLog:
  destination: file
  logAppend: true
  path: D:\Program Files\MongoDB\Server\6.0\log
net:
  port: 27017
  bindIp: 127.0.0.1

2.2 设置用户名密码

有不少使用mongosh的实现方式,这里使用可视化工具Navicat实现。先不要开启authorization等创建好用户及密码后再开启。

2.2.1 Navicat操作

1.创建数据库,点击数据库 > 点击角色,可查看全部角色。

以下是这些角色的权限和用途的简要说明:

  • dbAdmin(数据库管理员)
    权限:允许用户管理数据库,包括创建和删除集合、索引和查看统计信息。
    用途:适用于需要管理数据库结构的用户,但不需要全局权限的情况。
  • dbOwner(数据库所有者):
    权限:具有数据库的所有权限,包括对数据库中所有集合的读写和管理权限。
    用途:通常是数据库的所有者,具有最高级别的权限。
  • enableSharding(启用分片权限):
    权限:允许用户在数据库上启用分片(sharding)功能,以便将数据分布在多个分片服务器上。
    用途:适用于设置分片集群的用户,用于处理大量数据。
  • read(读取权限):
    权限:允许用户对指定数据库中的数据执行读操作。
    用途:允许用户查询和读取数据库中的数据,但不能进行写操作。
  • readWrite(读写权限):
    权限:允许用户对指定数据库中的数据执行读和写操作。
    用途:允许用户执行读取和写入数据库中的数据操作,包括插入、更新和删除等操作。
  • userAdmin(用户管理员):
    权限:允许用户管理数据库中的用户和角色,包括创建、修改和删除用户。
    用途:适用于需要管理数据库用户的用户。

请注意,以上是这些角色的一般权限和用途描述,实际上,MongoDB的角色和权限可以更加细粒度地配置,以满足特定的应用需求。角色的权限也可以根据数据库的需要进行自定义配置。因此,在实际使用中,你可以根据具体的访问控制需求来配置和分配角色。

  1. 设置用户名及密码

  1. 设置角色

点击脚本预览,可查看SQL:

db.createUser({
    user: "testadmin",
    pwd: "123456",
    roles: [
        {
            role: "dbAdmin",
            db: "test"
        }
    ],
    authenticationRestrictions: [ ]
})

设置好角色后保存即可。

2.2.2 修改配置文件

修改配置文件,添加security.authorization配置,如下图:

重启服务:

2.3 验证

重新直接连接数据库:

说明需要进行用户认证,修改连接:

连接测试成功,但是:

关闭security.authorization重启MongoDB服务,将用户的角色设置为dbOwner,再开启验证,再重启MongoDB:

重新连接成功。

3.SpringBoot集成

依赖:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

配置:

# 可以这样配置
spring:
  data:
    mongodb:
      uri: mongodb://testadmin:123456@localhost:27017/test

另一种配置【一个报错】Command failed with error 18:

com.mongodb.MongoCommandException:
Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' on server localhost:27017. 
The full response is {"ok": 0.0, "errmsg": "Authentication failed.", "code": 18, "codeName": "AuthenticationFailed"}
# 也可以这样配置      
spring:
  data:
    mongodb:
      host: localhost
      port: 27017
      database: test
      # 正确的配置
      username: testadmin
      password: '123456'
      # 报错的配置【密码没有用引号】
      username: testadmin
      password: 123456

MongoTemplate注入即可使用:

@SpringBootTest
public class MongoTemplateTest {
    @Resource
    private MongoTemplate mongoTemplate;
}

具体的方法我们下次继续。

目录
相关文章
|
7月前
|
存储 Prometheus 监控
136_生产监控:Prometheus集成 - 设置警报与指标选择与LLM部署监控最佳实践
在大语言模型(LLM)部署的生产环境中,有效的监控系统是确保服务稳定性、可靠性和性能的关键。随着LLM模型规模的不断扩大和应用场景的日益复杂,传统的监控手段已难以满足需求。Prometheus作为当前最流行的开源监控系统之一,凭借其强大的时序数据收集、查询和告警能力,已成为LLM部署监控的首选工具。
833 6
|
JSON Java 数据格式
springboot中表字段映射中设置JSON格式字段映射
springboot中表字段映射中设置JSON格式字段映射
753 1
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
689 1
|
存储 Java API
简单两步,Spring Boot 写死的定时任务也能动态设置:技术干货分享
【10月更文挑战第4天】在Spring Boot开发中,定时任务通常通过@Scheduled注解来实现,这种方式简单直接,但存在一个显著的限制:任务的执行时间或频率在编译时就已经确定,无法在运行时动态调整。然而,在实际工作中,我们往往需要根据业务需求或外部条件的变化来动态调整定时任务的执行计划。本文将分享一个简单两步的解决方案,让你的Spring Boot应用中的定时任务也能动态设置,从而满足更灵活的业务需求。
1319 4
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
1478 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
NoSQL Java 关系型数据库
MongoDB保姆级指南(下):无缝集成SpringData框架,一篇最全面的Java接入指南!
前面的两篇文章已经将MongoDB大多数知识进行了阐述,不过其中的所有内容,都基于原生的MongoDB语法在操作。可是,在实际的日常开发过程中,我们并不会直接去接触MongoDB,毕竟MongoDB只能算作是系统内的一个组件,无法仅依靠它来搭建出一整套系统。
1147 1
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
878 0
|
Java Spring 开发者
解锁 Spring Boot 自动化配置的黑科技:带你走进一键配置的高效开发新时代,再也不怕繁琐设置!
【8月更文挑战第31天】Spring Boot 的自动化配置机制极大简化了开发流程,使开发者能专注业务逻辑。通过 `@SpringBootApplication` 注解组合,特别是 `@EnableAutoConfiguration`,Spring Boot 可自动激活所需配置。例如,添加 JPA 依赖后,只需在 `application.properties` 配置数据库信息,即可自动完成 JPA 和数据源设置。这一机制基于多种条件注解(如 `@ConditionalOnClass`)实现智能配置。深入理解该机制有助于提升开发效率并更好地解决问题。
365 0
|
前端开发 JavaScript Java
【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
258 0
|
网络协议 安全
【Azure 应用服务】Azure Function集成虚拟网络,设置被同在虚拟网络中的Storage Account触发,遇见Function无法触发的问题
【Azure 应用服务】Azure Function集成虚拟网络,设置被同在虚拟网络中的Storage Account触发,遇见Function无法触发的问题
175 0

推荐镜像

更多