温馨提示×

MongoDB在Ubuntu上的连接字符串怎么写

小樊
45
2025-12-30 11:21:03
栏目: 云计算

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/证书路径

0