You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB启用认证后仍可无凭证登录,重启遇端口占用

MongoDB无凭证访问问题及端口占用排查

我现在仍能无需认证凭证访问MongoDB服务器,可带或不带凭证登录,已经试过各种方法,求帮忙!

当前mongod.conf配置

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
#  engine:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1


# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo


security:
authorization: "enabled"


#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

已执行的操作

  • 在mongod.conf中添加安全认证配置:
security:
authorization: "enabled"
  • 创建管理员用户:
db.createUser(
  {
    user: "admin",
    pwd: "MYPASSWORD",
    roles: [ { role: "root", db: "admin" } ]
  }
)
  • 重启MongoDB服务:
sudo service mongodb restart

问题核心

重启服务失败,查看mongod.log发现端口27017被占用(错误码9001,SocketException: Address already in use),退出码为48。这导致认证配置根本没生效,所以服务器还能无凭证登录。

解决步骤

1. 干掉占用端口的MongoDB进程

先找出占用27017端口的进程ID:

sudo lsof -i :27017
# 或者用netstat命令
sudo netstat -tulpn | grep 27017

然后强制终止该进程:

sudo kill -9 <进程ID>

2. 确认配置文件没问题

再检查一遍mongod.conf里的security.authorization配置,确保是"enabled",而且整个配置块没被注释掉。

3. 重新启动MongoDB服务

sudo service mongodb start

启动后查看日志确认启动成功:

sudo tail -f /var/log/mongodb/mongod.log

4. 验证认证是否生效

尝试无凭证登录,此时应该无法执行show dbs这类需要权限的操作;用管理员账号登录测试:

mongo -u admin -p MYPASSWORD --authenticationDatabase admin

登录后执行show dbs,能正常显示就说明认证生效了。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 12:34:57