MongoDB在系统数据库local中无法创建用户的解决办法

题目:MongoDB在系统数据库local中无法创建用户的解决办法

问题描述

在使用MongoDB时,有时候需要在local数据库中创建用户进行其他操作。但是在操作时,可能会遇到如下错误提示:

db.createUser({
    "user" : "test_user",
    "pwd" : "test_pwd",
    "roles" : [ "readWrite" ]
});

{
        "ok" : 0,
        "errmsg" : "not authorized on admin to execute command { createUser: \"test_user\", pwd: \"xxx\", roles: [ { role: \"readWrite\", db: \"admin\" } ], digestPassword: false, writeConcern: { w: \"majority\", wtimeout: 600000.0 }, ordered: true }",
        "code" : 13,
        "codeName" : "Unauthorized"
}

这时候就无法在local数据库中创建用户。

解决办法

在使用MongoDB时,需要区分操作系统中的root用户和mongo中的root用户,两个用户没有关联性。

local数据库是MongoDB系统级的数据库,只有使用MongoDB的root用户或者是拥有__system权限的用户才有权限在local这个系统级的数据库中创建用户。

如果需要在local中创建用户,则需要按照以下操作进行操作:

  1. 进入MongoDB连接命令行

    在系统命令行中输入:

    mongo admin -u root -p your_password

    输入密码后进入MongoDB连接界面

  2. 切换到local数据库

在MongoDB连接命令行中输入:

use local

切换到local数据库

  1. 创建用户

在local数据库中使用类似如下格式的命令创建用户:

db.createUser({
user: "test_user",
pwd: "password",
roles: [
{role: "readWrite", db: "test_db"}
]
})

其中,test_user为用户名,password为密码,test_db为需要授予用户读写权限的数据库名。

示例说明

示例1:使用系统管理员创建local用户

在MongoDB连接命令行中输入:

mongo admin -u root -p your_password

进入MongoDB连接命令行后使用如下命令:

use local

db.createUser({
    user: "test_user",
    pwd: "password",
    roles: [
        {role: "readWrite", db: "test_db"}
    ]
})

示例2:使用拥有__system权限的用户创建local用户

在MongoDB连接命令行中输入:

mongo admin -u system_user -p your_password authSource=admin

这里使用的是拥有__system权限的system_user用户,即在use local之前已经完成了授权。

进入MongoDB连接命令行后使用如下命令:

use local

db.createUser({
    user: "test_user",
    pwd: "password",
    roles: [
        {role: "readWrite", db: "test_db"}
    ]
})

以上就是针对MongoDB在系统数据库local中无法创建用户的解决办法的详细说明和示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MongoDB在系统数据库local中无法创建用户的解决办法 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • MySQL子查询操作实例详解

    MySQL子查询操作实例详解 什么是子查询? 子查询,顾名思义,就是在主查询语句中嵌套子查询语句,使得主查询语句通过子查询语句得到一个中间结果集,从而进行后续的联合处理。 子查询语句的语法格式 SELECT field1,field2,…fieldn FROM table_name WHERE fieldn expression_operator (SE…

    database 2023年5月22日
    00
  • Java中消息队列任务的平滑关闭详解

    我将为您详细讲解Java中消息队列任务的平滑关闭的完整攻略。 什么是消息队列 消息队列是一种高效的异步通信机制,它能够将消息发送到队列中,然后由多个消费者对这些消息进行处理。消息队列通常用于应用程序之间的通信,例如,在电商网站中,订单服务将订单信息发送到消息队列,而物流服务则从消息队列中获取这些消息进行处理。 Java中的消息队列 在Java中,最流行的消息…

    database 2023年5月22日
    00
  • 详解springboot中的jar包部署步骤

    下面我来详细讲解“详解Spring Boot中的Jar包部署步骤”的完整攻略。 一、前置条件 在进行 Spring Boot 应用程序的 Jar 包部署之前,必须满足以下条件: 已经安装JDK,并配置了JAVA_HOME环境变量 下载安装 Mysql 数据库并启动 安装 Maven,并配置了MAVEN_HOME环境变量 二、构建Spring Boot应用程序…

    database 2023年5月22日
    00
  • Redis密码设置

    redis没有实现访问控制这个功能,但是它提供了一个轻量级的认证方式,可以编辑redis.conf配置来启用认证。    1、初始化Redis密码:    在配置文件中有个参数: requirepass  这个就是配置redis访问密码的参数;    比如 requirepass test123;    (Ps:需重启Redis才能生效)    redis的…

    Redis 2023年4月13日
    00
  • MySql中如何使用 explain 查询 SQL 的执行计划

    MySQL中使用explain命令可以查看SQL查询的执行计划,包括使用哪些索引、哪个表被访问以及访问的顺序等,可以帮助开发者优化SQL查询语句。下面是具体的步骤: 1. 使用 explain 查看SQL执行计划 explain SELECT * FROM `user` WHERE `name` LIKE ‘Tom%’; 在MySQL命令行中执行该命令,将会…

    database 2023年5月21日
    00
  • Mysql获取指定时间范围数据的各种实例

    以下是关于MySQL获取指定时间范围数据的攻略: 获取指定日期时间范围数据的基本语法 我们可以使用SELECT语句来获取指定时间范围内的数据。基本的语法如下: SELECT column1, column2, … FROM table_name WHERE column_name BETWEEN date1 AND date2; 在上述语句中,我们先指定…

    database 2023年5月22日
    00
  • 如何合理使用数据库冗余字段的方法

    关于“如何合理使用数据库冗余字段的方法”的攻略,我们可以从以下几个方面来讲解: 1. 什么是数据库冗余字段? 数据库冗余字段指的是在数据库表中,为了增加查询时的效率或者为了满足业务需求,在一个表中出现重复的数据。冗余字段在很多情况下都是为了优化查询而存在的。 2. 冗余字段的使用条件 使用冗余字段,需要满足以下几个条件: 数据库表中存在业务上的冗余数据,即一…

    database 2023年5月19日
    00
  • Spring Boot整合MyBatis连接Oracle数据库的步骤全纪录

    下面是Spring Boot整合MyBatis连接Oracle数据库的步骤全纪录。 准备工作 安装JDK环境 安装Maven 安装Oracle数据库 在Oracle数据库中创建一个表,用于演示 创建Spring Boot工程 打开命令行工具,执行以下命令 mvn archetype:generate -DgroupId=com.example -Dartif…

    database 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部