【问题标题】:Mongodb could not find user "user@database"Mongodb 找不到用户“user@database”
【发布时间】:2019-12-17 11:01:05
【问题描述】:

我正在尝试允许 mongo 用户连接到 mongo 数据库,但无论我赋予用户什么角色,身份验证都会失败,并在日志中显示以下错误:

2019-08-09T17:03:05.486+0000 I ACCESS   [conn13] SCRAM-SHA-1 authentication failed for username on dbname from client 127.0.0.1:38790 ; UserNotFound: Could not find user username@dbname
2019-08-09T17:03:05.488+0000 I NETWORK  [conn13] end connection 127.0.0.1:38790 (0 connections now open)

这里是/etc/mongodb.conf的内容

# mongodb.conf

# Where to store the data.
dbpath=/var/lib/mongodb

#where to log
logpath=/var/log/mongodb/mongodb.log

logappend=true

bind_ip = 0.0.0.0
port = 27017

# Enable journaling, http://www.mongodb.org/display/DOCS/Journaling
journal=true

auth=true

这是我创建用户的方式:

db.createUser({
  user: "username",
  pwd: "secret",
  roles: [
    { role: "userAdmin", db: "dbname" },
    { role: "dbAdmin",   db: "dbname" },
    { role: "readWrite", db: "dbname" }
  ]
});

我还将dbOwner 角色授予数据库dbname 上的用户。这里发生了什么?如果用户是所有者并且具有读/写权限,为什么我无法连接到数据库?我必须创建一个名为username@dbname 的用户吗?

编辑:刚刚尝试使用用户名 username@dbname 添加用户,但该用户也无法连接。

我也可以使用相同的命令连接到 mongo,最后减去 /dbname,然后运行 ​​use dbname。我不知道为什么这会起作用,但直接连接不会。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    问题是在admin 数据库而不是dbname 上创建数据库用户。

    从连接字符串 / mongo shell / 等中省略 /dbname 意味着连接字符串将通过 admin 数据库进行身份验证。引用文档:

    如果未指定“/database”且连接字符串包括 凭据,驱动程序将对管理员数据库进行身份验证

    (https://docs.mongodb.com/manual/reference/connection-string/#components)。

    如果定义了/dbname,则连接字符串将针对dbname 进行身份验证,除非authSource 参数配置为指定用户所在的数据库。

    您可以通过将authSource=admin 添加到连接字符串或将--authenticationDatabase admin 添加到mongo shell command 来确认是这种情况。

    或者,您可以使用db.getUsers() 查看创建用户的数据库。

    【讨论】:

    • 该问题与authenticationDatabase 有关。出于某种原因,我的用户都是在 test 数据库上创建的(不是我创建的)。
    【解决方案2】:

    我遇到了同样的错误,我的解决方案是将?authSource=admin 添加到连接字符串的末尾:

    MONGODB_URI="mongodb://username:password@localhost:27017/db_name?authSource=admin"
    

    【讨论】:

      猜你喜欢
      • 2021-08-11
      • 2015-10-27
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 2016-07-15
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多