mongodb密码特殊字符的解决方法

一般情况是这样连接的:

mongoClient.connect("mongodb://username:password@127.X.X.X:27017/db",{ useNewUrlParser: true ,useUnifiedTopology: true})

但是,如果你的密码里面设置了特殊字符,比如‘@’,‘%’,可能使得 mongodb 连接不能被正常解析,字符转义也没什么效果,从而导致连接失败.

解决方法如下:

  1. 更换连接格式

    mongoose.connect(
    "mongodb://username:password@127.X.X.X:27017/db",
    {user: 'username', pass: 'password',useNewUrlParser: true ,useUnifiedTopology: true}
    );
  2. 开启 uri_decode_auth 功能,uri_decode_auth 在 driver 内部 decode连接串

    mongoose.connect(
    "mongodb://username:password@127.X.X.X:27017/db",
    {
    uri_decode_auth: true,
    useNewUrlParser: true,
    useUnifiedTopology: true
    },
    function(err, db) {}
    );