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

yizhihongxing

题目: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 常见的数据表设计误区汇总 在进行MySQL数据库表设计时,常常会遇到各种各样的问题和误区。本文将汇总常见的数据表设计误区,为你提供完整和详细的攻略,帮助你优化数据库表设计,提高数据处理的效率。 误区1:忽视命名规则 在设计数据表时,命名规则非常重要,它能够提高数据表的可理解性和可维护性,方便其他开发人员的使用和维护。 解决方案:遵循一定的命名规则…

    database 2023年5月22日
    00
  • 为什么MySQL 使用timestamp可以无视时区问题.

    为什么MySQL使用timestamp可以无视时区问题? 在MySQL中,使用timestamp类型进行日期和时间的存储,它是一种与时区无关的数据类型。无论你是哪个时区,时间都会以相同的方式存储在timestamp类型字段中。下面分为以下几个方面进行讲解。 timestamp存储的时间是UTC(协调世界时) 如下面的代码块所示,我们可以使用NOW()函数获取…

    database 2023年5月22日
    00
  • 用PHP调用Oracle存储过程

    下面我将给你详细讲解“用PHP调用Oracle存储过程”的完整攻略。 1. 安装Oracle驱动程序 要使用PHP调用Oracle存储过程,我们首先需要安装Oracle官方提供的驱动程序。可以在这个页面下载适合自己系统的驱动版本。下载后,解压缩到合适的位置,并将解压缩后的路径添加到系统环境变量中。其实,我们最好将Oracle的路径设置为PATH环境变量中,这…

    database 2023年5月21日
    00
  • mysql查询字符串替换语句小结(数据库字符串替换)

    MySQL 查询字符串替换语句小结 什么是字符串替换语句? 字符串替换语句是一种用于替换MySQL数据库表中某列的所有匹配项的语句。在很多情况下,我们需要从表中搜索并替换一个特定字符串。因此,MySQL 提供了字符串替换函数,帮助我们轻松找到并替换特定字符串。 MySQL 的字符串替换函数 MySQL中提供了多个字符串替换函数,这里我们主要介绍其中三个: R…

    database 2023年5月22日
    00
  • 如何使用Python连接和操作Oracle数据库?

    在Python中,可以使用cx_Oracle模块连接和操作Oracle数据库。以下是Python使用cx_Oracle模块连接和操作Oracle数据库的完整攻略,包括连接Oracle数据库、表、插入数据、查询数据、更新数据、删除数据等操作。 连接Oracle数据库 在Python中,可以使用cx_Oracle模块连接Oracle数据库。以下是连接Oracle…

    python 2023年5月12日
    00
  • 在sqlserver中如何使用CTE解决复杂查询问题

    CTE(Common Table Expression)是 SQL Server 中一个强大的查询方式,它主要用于解决复杂查询问题,并可以提高查询效率。在 SQL Server 2005 之前,我们可能需要嵌套多个子查询或使用临时表等方式来解决复杂查询问题,但这些方式难以维护且效率有限。而 CTE 可以更清晰地表达查询逻辑、提高查询效率且易于维护。 下面是 …

    database 2023年5月21日
    00
  • PouchDB 和 PostgreSQL 的区别

    PouchDB和PostgreSQL是两种不同类型的数据库,虽然它们都可以用来存储数据,但它们有很多区别。下面我将详细讲解它们之间的区别。 1. 数据库类型的区别 PouchDB是一种非关系型(NoSQL)数据库,而PostgreSQL是一种关系型数据库。这就意味着它们在数据组织结构、查询方式、数据模型等方面有很大的区别。 2. 数据模型的区别 PouchD…

    database 2023年3月27日
    00
  • asp采用ODBC接口访问MySQL的方法

    准备环境 首先,需要确保你已经安装了MySQL数据库,并且可以使用ODBC进行连接。若没有安装,请先到MySQL官网下载安装。另外,你也需要下载ODBC驱动程序,以便能够创建ODBC数据源。在这里,我们以MySQL 5.7 版本为例,下载 Connector/ODBC。 创建ODBC数据源 安装完ODBC驱动程序后,我们需要创建ODBC数据源,以实现ASP网…

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