AWS EC2中MongoDB容器本地连接授权失败问题求助
问题排查与解决方案
核心原因
你创建的用户kek是admin数据库的超级用户(通过MONGO_INITDB_ROOT_USERNAME初始化),并非dbName数据库的用户。而你在本地连接时错误指定了认证数据库为dbName,导致MongoDB找不到对应用户,触发UserNotFound错误。
Fast API能正常连接的原因是连接字符串里明确指定了authSource=admin,告诉MongoDB去admin库验证用户身份。
快速解决:正确连接MongoDB
使用以下命令连接,和Fast API的认证逻辑保持一致:
mongosh --port 10511 -u kek -p 1234 --authenticationDatabase admin
或者进入mongosh后手动切换到admin库认证:
mongosh --port 10511 # 切换到admin数据库 use admin # 用root用户认证 db.auth('kek','1234')
认证成功后,你可以切换到dbName库操作数据:
use dbName # 执行查询或写入操作,比如查看集合 show collections
可选:为dbName创建专属用户
如果不想用admin的超级用户操作业务库,可以给dbName创建单独的读写用户:
- 先用上述正确方式登录MongoDB
- 切换到
dbName库:use dbName - 创建专属用户:
db.createUser({ user: "db_kek", pwd: "your_password", roles: [{ role: "readWrite", db: "dbName" }] }) - 之后就可以用这个用户连接,指定认证数据库为
dbName:mongosh --port 10511 -u db_kek -p your_password --authenticationDatabase dbName
内容的提问来源于stack exchange,提问作者erugersauzu
相关产品推荐
相关产品推荐

