MongoDB 在 Ubuntu 的连接字符串写法
一 基本格式与参数
- 标准 URI 形式:mongodb://[username:password@]host[:port][/[defaultauthdb][?options]]
- 协议头:固定为 mongodb://
- 认证信息:可选,格式 username:password@
- 主机与端口:可指定一个或多个 host:port,默认端口 27017
- 默认认证库:可选,未指定且提供凭据时默认 admin
- 查询参数:以 key=value 形式拼接,多个用 & 分隔,如 authSource=admin&ssl=true
- 常用选项
- authSource:指定认证数据库(如用户存在 admin 库,常用 authSource=admin)
- replicaSet:副本集名称(连接副本集必填)
- ssl / tls:启用加密连接(如 ssl=true)
- connectTimeoutMS / socketTimeoutMS:连接/套接字超时(毫秒)
- w / wtimeoutMS:写关注级别与超时(如 w=majority)
- readPreference:读偏好(如 secondary)
- maxPoolSize:连接池最大连接数
- 特殊字符处理:用户名或密码包含 :, /, ?, #, [, ], @ 等需进行 URL 编码(如 @ → %40)
二 常见连接字符串示例
- 本地默认实例:mongodb://localhost
- 指定数据库:mongodb://localhost/mydatabase
- 用户名密码连接:mongodb://myuser:mypass@localhost:27017/mydatabase
- 指定认证库:mongodb://myuser:mypass@localhost:27017/mydatabase?authSource=admin
- 启用 SSL:mongodb://myuser:mypass@localhost:27017/mydatabase?ssl=true
- 副本集连接:mongodb://host1:27017,host2:27017,host3:27017/mydatabase?replicaSet=myReplSet
- 多选项组合:mongodb://myuser:mypass@localhost:27017/mydatabase?authSource=admin&ssl=true&connectTimeoutMS=30000
- 使用 SRV 记录(Atlas 或支持 SRV 的部署):mongodb+srv://mycluster.abcd1.mongodb.net/myFirstDatabase(SRV 记录会自动解析主机与端口,通常无需显式写端口)
三 在 Ubuntu 上连接与排错要点
- 启动并检查服务:
- 启动:sudo systemctl start mongod
- 开机自启:sudo systemctl enable mongod
- 状态:sudo systemctl status mongod
- 远程访问配置(如从外部连接 Ubuntu 上的 MongoDB)
- 修改配置文件 /etc/mongod.conf:将 bindIp: 127.0.0.1 改为 bindIp: 0.0.0.0(或加入服务器内网/公网 IP)
- 重启生效:sudo systemctl restart mongod
- 防火墙放行端口(UFW):sudo ufw allow 27017
- 连接工具
- 命令行:mongosh “mongodb://username:password@host:27017/dbname?authSource=admin”
- GUI:MongoDB Compass 直接粘贴上述 URI 连接
- 常见报错速查
- 无法连接目标主机/端口:核对 host、port 与 防火墙/安全组 是否放行 27017
- 认证失败:核对 username/password,并确认 authSource 是否为用户所在数据库(常见为 admin)
- 副本集连不上:确认 replicaSet 名称与 各节点地址/端口 正确
- 证书/加密问题:按需启用 ssl=true 并配置 CA/证书路径