NodeJS MongoServerError:未授权在mydb_db上执行命令

fhity93d  于 5个月前  发布在  Node.js
关注(0)|答案(1)|浏览(74)

我使用mongo 6.0.7并运行此命令:

mongosh -u api -p --authenticationDatabase mydb_db

字符串
我用这个用户登录就可以了
但是使用相同的凭据,我的应用程序无法连接到数据库,并且我在日志中得到authentication failed(如果重要的话,它是nodejs)。
但是在登录后,我可以运行use mydb_db,它切换正常,但是失败了:

rs0 [direct: primary] mydb_db> db.getUsers()
MongoServerError: not authorized on mydb_db to execute command { usersInfo: 1, lsid: { id: UUID("6bcc1743-9303-4ad4-a136-bc0b7bf0e1b8") }, $clusterTime: { clusterTime: Timestamp(1704272881, 1), signature: { hash: BinData(0, 62E80733C0FCF60FE333934D8E6796C319B16B99), keyId: 7264672765817389063 } }, $db: "mydb_db" }
rs0 [direct: primary] mydb_db> show users
MongoServerError: not authorized on mydb_db to execute command { usersInfo: 1, lsid: { id: UUID("6bcc1743-9303-4ad4-a136-bc0b7bf0e1b8") }, $clusterTime: { clusterTime: Timestamp(1704272881, 1), signature: { hash: BinData(0, 62E80733C0FCF60FE333934D8E6796C319B16B99), keyId: 7264672765817389063 } }, $db: "mydb_db" }
rs0 [direct: primary] mydb_db> show dbs
mydb_db  5.50 MiB


这个数据库不是新的,它已经工作了几个月了。昨天我修改了api用户的密码。
我仍然可以登录,但这是我作为错误。

更新1

.env文件的内容:

NODE_ENV=production
MONGO_URI_LOCAL=mongodb://localhost:27017/
MONGO_URI_SERVER=mongodb://api:myNewPassword@localhost:27017/
DB_NAME=mydb_db
DB_USERNAME=api
DB_PASSWORD=myNewPassword

pgpifvop

pgpifvop1#

你已经问过类似的问题了。我怀疑你更新错了用户。
您可以使用此命令检查数据库中所有已定义的用户(使用管理员帐户执行)。

db.getSiblingDB('admin').getCollection('system.users').find()

字符串
仔细查看用户是在哪个数据库中创建的,以及您更改了哪个用户的密码。就我个人而言,我不知道为什么要在admin以外的任何数据库中创建用户。
您还可以在尝试保存到mongodb时查看身份验证失败

相关问题