PAYATHON 2026

Payload CMS 连接 MongoDB 时为何提示用户名含未转义字符?

数据小许

结论

报错是因为 DATABASE_URI 格式错误:配置中把本地地址 mongodb://127.0.0.1/basic-setup 和 MongoDB Atlas 地址 mongodb+srv://... 拼在了一起,导致驱动将前半段错误地解析为用户名或连接信息。根据给出的内容,密码 3g.. 本身不需要转义。

当前配置中包含两段连接协议:

mongodb://127.0.0.1/basic-setupmongodb+srv://basic-setup-user:3g..@cluster0.zbczkaw.mongodb.net/basic-setup-db?appName=Cluster0

MongoDB URI 只能指定一个连接目标,不能直接拼接本地 URI 和 Atlas URI。

选择正确的连接字符串

如果要连接 MongoDB Atlas,请将 .env 中的 DATABASE_URI 设置为单独的 Atlas URI:

DATABASE_URI=mongodb+srv://basic-setup-user:3g..@cluster0.zbczkaw.mongodb.net/basic-setup-db?appName=Cluster0

如果要连接本机 MongoDB,可以使用本地 URI,例如:

DATABASE_URI=mongodb://127.0.0.1:27017/basic-setup-db

根据实际运行的 MongoDB 实例,保留其中一种配置。选择 Atlas 时,还需确认集群可用,且网络访问设置允许当前环境连接。

修改后检查

  1. 检查 .env 中的 DATABASE_URI,确认整行只有一个协议前缀,主机和数据库名也与所选实例对应。
  2. 确认 Payload CMS 从该环境变量读取连接 URI。修改 .env 后,重新启动开发进程,让新值生效。
  3. 如果仍然出现认证错误,再检查 Atlas 中的数据库用户名和密码是否正确。只有密码包含 URI 中有特殊含义的字符时,才需要按 URI 规则进行百分号编码。

Username contains unescaped characters 是错误 URI 被解析后出现的提示,并不表示用户名或密码一定包含特殊字符。

备注:内容仅供参考。