按MongoDB文档配置后无法访问数据库,报错connect ECONNREFUSED 127.0.0.1:27017
解决MongoDB SCRAM认证配置后无法访问的问题
一、先恢复数据库访问
停止当前mongod进程
打开系统终端,执行命令关闭mongod:mongod --port 27017 --dbpath /var/lib/mongodb --shutdown如果上述命令无效,可通过进程ID关闭:
ps aux | grep mongod # 找到mongod的PID kill <PID> # 替换为实际PID,不要用kill -9强制终止无认证启动mongod
以无访问控制模式启动,确保能正常连接:mongod --port 27017 --dbpath /var/lib/mongodb --noauth验证连接
打开新终端,用mongosh连接:mongosh --port 27017此时应能成功进入数据库shell。
二、检查并确认用户状态
连接成功后,切换到admin数据库,查看已创建的用户:
use admin db.getUsers()
确认max用户是否存在,角色是否和你创建的一致。如果用户不存在或配置错误,重新创建:
// 如果用户存在,先删除(可选) db.dropUser("max") // 重新创建管理员用户 db.createUser( { user: "max", pwd: "max", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ] } )
三、正确启用SCRAM认证
关闭当前mongod实例
在mongosh中执行:db.shutdownServer()启用访问控制启动mongod
推荐两种方式:- 命令行启动:
mongod --port 27017 --dbpath /var/lib/mongodb --auth - 配置文件启动(更稳定):
编辑MongoDB配置文件(通常路径:/etc/mongod.conf或/usr/local/etc/mongod.conf),添加或修改以下配置:
保存后启动服务:security: authorization: enabledsudo systemctl start mongod # Ubuntu/Debian系统 # macOS用brew:brew services start mongodb-community
- 命令行启动:
四、用MongoDB Compass正确连接
在Compass中填写连接信息:
- 主机:127.0.0.1
- 端口:27017
- 认证方式:SCRAM-SHA-1或SCRAM-SHA-256(MongoDB默认支持)
- 认证数据库:admin(必须指定,因为用户创建在admin库)
- 用户名:max
- 密码:max
或者直接使用连接字符串:
mongodb://max:max@127.0.0.1:27017/?authSource=admin
问题原因说明
你之前在MongoDB Compass内置的mongosh中创建用户,可能存在以下问题:
- Compass内置的mongosh连接的mongod实例,和你后续启动的实例不是同一个,导致用户配置未被持久化到正确的数据目录;
- 当时启动的mongod可能未正确加载数据目录,导致用户信息未保存;
- 后续启用认证时,mongod无法识别未正确存储的用户,甚至可能因配置错误导致mongod未正常启动,从而出现
ECONNREFUSED错误。
内容的提问来源于stack exchange,提问作者Wayne
相关产品推荐
相关产品推荐

