এতে “@” দিয়ে মঙ্গোডিবি পাসওয়ার্ড রয়েছে


91

আমি নোড.জেএস-তে মঙ্গুজ ব্যবহার করে ব্যবহারকারীর নাম এবং পাসওয়ার্ড সহ একটি মঙ্গোডিবি ডাটাবেসে সংযোগ দেওয়ার চেষ্টা করছি। সমস্ত দস্তাবেজ বলছেন যে সংযোগ স্ট্রিংয়ের মতো দেখতে পাওয়া উচিত

  mongodb://username:password@host:port/db

তবে পাসওয়ার্ডটিতে এতে '@' অক্ষর রয়েছে। আমি কীভাবে এর মধ্য থেকে একটি সংযোগের স্ট্রিং তৈরি করতে পারি যা মঙ্গুজ বুঝতে পারে? আমি কি পাসওয়ার্ডের '@' এড়াতে পারি বা সংযোগের জন্য আমার অন্য কোনও পদ্ধতি ব্যবহার করতে হবে?


4
না - কাজ করে না তাদের 40% এনডিং করা কোনওভাবেই কাজ করে না।
আইজেড

4
আমি পাসওয়ার্ডটি এমন একটিতে পরিবর্তন করতে প্রস্তাব করব যাতে @ চরিত্রটি অন্তর্ভুক্ত না হয়।
সিলভাইন Defresne

4
একটি স্ল্যাশ কাজ দিয়ে পালানো না? "\ @"?
ধ্রুবপাঠক

4
@ আমলমকুলকার্নি: আমি জানি যে সংযোগ নির্দিষ্ট করার জন্য এটি মঙ্গুসের বিন্যাস। তবে ওপি জানতে চেয়েছিল যে কীভাবে তিনি একটি '@' রয়েছে এমন একটি পাসওয়ার্ড ব্যবহার করতে পারেন? এটি "p @ ssw0rd" (যা একটি খোঁড়া পাসওয়ার্ড) এর মতো একটি পাসওয়ার্ড। ইউআরএলটি হবে "monbgodb: // ব্যবহারকারীর নাম: p @ ssw0rd @ হোস্ট: পোর্ট / ডিবি" যা মঙ্গুস দ্বারা ভুল ব্যাখ্যা করা হয়েছে (যেমন এটি শেষের পরিবর্তে প্রথম @ এ বিভক্ত হয়)।
সিলভাইন ডিফ্রেসনে

4
@আপনার পাসওয়ার্ডের অক্ষরটি URL এ এনকোড করা দরকার। এনকোডেড @চরিত্রটি %40। তবে %চরিত্রটিও এনকোড করা দরকার। সুতরাং, যদি আপনার পাসওয়ার্ডটি হয়, যাক, বলা যাক, p@ssচূড়ান্ত এনকোড হওয়া পাসওয়ার্ডটি হওয়া উচিতp%2540ss
মাইকেল পাচেকো

উত্তর:


115

এই বাক্য গঠনটি ব্যবহার করুন:

mongoClient.connect("mongodb://username:p%40ssword@host:port/dbname?authSource=admin", { 
        useNewUrlParser: true
    }, function(err, db) {

    }
);

6
এই উত্তরটির আরও বেশি ভালবাসা পাওয়া উচিত, এটি কেবলমাত্র @ প্রতীককে% 40 এ রূপান্তরিত করে যা কৌশলটি করে।
jonezy

4
আমি {uri_decode_auth: true}প্রথম নজরে মিস করেছি , তবে এটি একবার লক্ষ্য করেছিলাম। ধন্যবাদ
মার্ক রেন্ডেল

4
নুবিদের জন্য, {uri_decode_auth: true}যদি আপনি নোডজেএসে থাকেন এবং মঙ্গোডিবি-র নেটিভ ড্রাইভার ব্যবহার করেন তবে একটি পৃথক বস্তু হিসাবে পাস করা উচিত।
কৌশিক শম চৌধুরী চৌধুরী

4
[uri_decode_auth] বিকল্পগুলি ড্রাইভার সংস্করণ 3.1 হিসাবে সমর্থিত নয়
টোডেড

এটি বিকল্পগুলি দেয় [uri_decode_auth] সমর্থিত নয়, মংগুজ সর্বশেষ ব্যবহার করে
মোহিত সেহগল

38

যদি আপনার পাসওয়ার্ডে বিশেষ অক্ষর থাকে:

const dbUrl = `mongodb://adminUsername:${encodeURIComponent('adminPassword')}@localhost:27017/mydb`;

এটি ওপি এর খুব নির্দিষ্ট ব্যবহারের ক্ষেত্রেই নয়, সম্পূর্ণ সমস্যাটি ঠিক করে দেওয়ার কারণে এটি আরও উত্তর পেতে পারে answer
spikyjt

29

কলটির optionsপ্যারামিটারটি mongoose.connectইউআরএল স্ট্রিংয়ের পরিবর্তে পাসওয়ার্ডটি নির্দিষ্ট করার জন্য ব্যবহার করুন :

mongoose.connect('mongodb://localhost/test',
                 {user: 'username', pass: 'p@ssword'},
                 callback);

4
আমি এই পদ্ধতির পছন্দ করি কারণ আরও একটি লাইন টাইপ করলে ক্ষতি হয় না।
এস প্যাটেল

5

আমার বন্ধুরা এটি চেষ্টা করে দেখুন:

    mongoose.connect("mongodb://localhost:27017/test?authSource=admin",
                     {user: 'viettd', pass: 'abc@123'});

test
adminপ্রমাণীকরণের জন্য আমার ডিবি নামটি আমার ডিবি
viettdহ'ল আমার ব্যবহারকারী নামটি
abc@123আমার পাসওয়ার্ড


5

পরিবর্তে পিডব্লিউড পাস ব্যবহার করুন, যা আমার জন্য সংস্করণ ৩.২ এর জন্য কাজ করেছে

mongoose.connect('mongodb://localhost/test',
                 {user: 'username', pwd: 'p@ssword'},
                 callback);

4

আমিও একই সমস্যার মুখোমুখি হয়েছি। আমি সংযোগ স্ট্রিং এ এনকোড পাসওয়ার্ড যোগ করে সমাধান করেছি। এবং এটি ঠিকভাবে কাজ করে।

(1) https://www.url-encode-decode.com থেকে আপনার পাসওয়ার্ডটি এনকোড করুন
(২) আপনার পাসওয়ার্ডটি এনকোডড দিয়ে প্রতিস্থাপন করুন।
(3) এটি ভাল কাজ করা উচিত।

উদাহরণস্বরূপ:
আসল পাসওয়ার্ড: ABCDEX $ KrrpvDzRTy` @ drf। '; 3X
এনকোড পাসওয়ার্ড: ABCDEX% 24KrrpvDzRTy% 60% 40drf।% 27% 3B3X

মোংডব্ব: // ইউজার 1: এবিসিডিএক্স ১০২৪ কেপিআরপিভিডিজেআরটিআই 60০% ৯০০ ডিআরএফ।০২২ %3 বি 3 এক্স@ডেস্ট.কম: 1234, ডিএস 1234-est.com: 19889 / মঙ্গো-দেব? প্রতিলিপি সেট = আরএস-ডিএস 123546978 & এসএসএল = সত্য ',


4
অবিশ্বস্ত উত্সে পাসওয়ার্ড প্রেরণের জন্য সেরা পরামর্শ নয় ...
লোকারাড

@ গুয়ারাড যেমন বলেছিলেন, আপনার ডাটাবেসের পাসওয়ার্ডটি প্রকাশ করা উচিত নয় এবং আপনি নিয়মিত পাসওয়ার্ড পরিবর্তন করলে উপযুক্ত নয়। এবং এই মন্তব্যের কারণটি হ'ল, এটি করার জন্য আপনার অন্যান্য সফ্টওয়্যার / সাইটের দরকার নেই, encodeURIComponent()এটি কাজটি করতে পারে এমন বিল্ট-ইন ফাংশন।
27px

4

আপনি যদি মংডব্ব নেটিভ নোড.জেএস ড্রাইভার ব্যবহার করেন তবে এটি আমার পক্ষে ৩.১ ড্রাইভার সংস্করণ হিসাবে কাজ করে। ধরে নিন আপনার ইউআরএলে প্রমাণীকরণের তথ্য নেই।

MongoClient = require('mongodb').MongoClient;
let options = {
    useNewUrlParser: true,
    auth: {
        user: 'your_usr',
        password: 'your_pwd'
    }
};
MongoClient.connect(url, options, callback);

অথবা আপনি যদি নিজের ইউআরএলে প্রমাণীকরণের তথ্য অন্তর্ভুক্ত করতে চান তবে এটি করুন:

let url = "mongodb://username:" + encodeURIComponent("p@ssword") + "@localhost:27017/database"

3

উপরে উল্লিখিত সমাধানগুলির কোনওোটাই আমার পক্ষে কাজ করেনি। আমি এটি আরও গবেষণা করে জানতে পেরেছিলাম যে আমাকে ইউজনউইল পার্সার প্যারামিটারটি অন্তর্ভুক্ত করতে হয়েছিল।

mongoose.connect(db, {
    useNewUrlParser : true
    },
    err => {
    if (err){
        console.error('Error: ' + err)
    }
    else{
        console.log('Connected to MongoDb')
    }
})

আমি যা বুঝি সেগুলি থেকে আপনার এটি ব্যবহার করার জন্য মঙ্গোডিবির একটি নির্দিষ্ট সংস্করণ প্রয়োজন। আরও তথ্যের জন্য, "নতুন ইউআরএল স্ট্রিং পার্সারকে অবমূল্যায়ন করা হয়েছে" এড়ান এড়ান পরীক্ষা করে নিউ ইউআরএল পার্সার সেট করে সত্যতা সতর্ক করুন

এটি সতর্কতা থেকে মুক্তি পাওয়ার জন্য তবে স্পষ্টভাবে সংস্করণটি প্রয়োজনীয় প্যারামিটারকেও প্রভাবিত করে।

আমি সমস্ত বিশেষ অক্ষর পরীক্ষা করি নি তবে এটি অবশ্যই '@ # $' এর সাথে কাজ করে।

আশাকরি এটা সাহায্য করবে.


1

কখনও কখনও আপনাকে অন্যান্য সরঞ্জামগুলি ব্যবহার করে ডিবিতে সংযোগ স্থাপন করতে হবে যা স্ট্রিংটিকে কেবল সংযোগ স্ট্রিং হিসাবে গ্রহণ করে। সুতরাং কেবল% 40 দিয়ে @ সাইন পরিবর্তন করুন


উদাহরণস্বরূপ (ডামি ব্যবহারকারী এবং পাসের বিষয়ে চিন্তা করবেন না) এটি পরিবর্তন করুন: মংডোবি: // কিপকিপ: নোলোলা 22 @@ ds031223.mlab.com: 3d223 / মিশল থেকে: মংডোব: // কিপকিপ: নোলোলা 22%40@ds031223.mlab.com: 3d223 / mishlo
Dang

0
Also, if your password contains a percentage, %, 
 Because the percent ("%") character serves as the indicator for percent-encoded octets, it must be percent-encoded as "%25" for that octet to be used as data within a URI

for example, if your password is John%Doe, the new transformed password will be John%25Doe or
If password is Paul%20Wait, New Password will be Paul%2520Wait

mongoClient.connect("mongodb://username:John%25Doe@host:port/dbname", function(err, db) {
// password is John%Doe
    }`enter code here`
);

0

এই সমাধানটির জন্য অতিরিক্ত নির্ভরতা প্রয়োজন তবে অবশেষে এটি আমার পক্ষে কাজ করেছিল।

যোগ mongodb-uriআপনার প্রকল্পের এবং আপনার কোডে নিম্নলিখিত পংক্তিগুলি করুন:

const mongoose = require('mongoose')
const mongodbUri = require('mongodb-uri')
let mongooseUri = mongodbUri.formatMongoose(config.mongo.uri)
mongoose.connect(mongooseUri, config.mongo.options)

আমি এই পরামর্শটি mongooseগীতহাব ইস্যু # 6044 এ পেয়েছি ।


0

মোঙ্গো কম্পাসের সাথে সংযুক্তদের জন্য । ( ম্যাকোএসএক্স ) কেবল আপনার ক্লাস্টারে যান -> সুরক্ষা (ট্যাব) mongodb.com এ

ক্লাস্টার-সুরক্ষা

তারপরে

আপনার পাসওয়ার্ড সম্পাদনা করুন (আপনার ব্যবহারকারীর ব্যবহারের সম্পাদনা বোতাম টিপুন): এখানে চিত্র বর্ণনা লিখুন

আপনি একটি মডেল / পপআপ / ডায়লগ পাবেন: আপনার নামের নীচে সম্পাদনা পাসওয়ার্ড টিপুন (ডিফল্টরূপে বোতামটি গ্রেভ হয়ে গেছে তবে আপনার নামের নীচে প্রদর্শিত হবে) -> তারপরে আপডেট ব্যবহারকারী টিপুন

ডায়ালগ পপআপ এডিটপ্যাসওয়ার্ড

পরবর্তী :

আপনার মঙ্গো ডিবি কম্পাস অ্যাপ্লিকেশনটি চালু থাকলে বন্ধ করুন: (মঙ্গো প্রস্থান করুন)

মোঙ্গো কম্পাস ছাড়ুন

পরবর্তী পর্ব:

Mongodb.com- এ ওভারভিউ ট্যাবে ফিরে যান এবং সংযোগ নির্বাচন করুন

ওভারভিউতে ফিরে যান: ওভারভিউ ফিরে এবং সংযোগ নির্বাচন করুন

পরবর্তী পর্ব:

পপআপ কথোপকথনে মোংগোডিবি কম্পাসের সাথে সংযুক্ত নির্বাচন করুন তারপরে পরবর্তী দৃষ্টিতে আপনি যে সংস্করণটি ব্যবহার করতে চান তা নির্বাচন করুন (পছন্দনীয় সংস্করণ নম্বর আগে ): মঙ্গোডিবি কম্পাসের সাথে সংযুক্ত হন

সংস্করণ নির্বাচন করুন

তারপরে:

আপনার কাছে উপস্থাপিত ইউআরআই স্ট্রিংটি অনুলিপি করুন :

উরি স্ট্রিং কপি করুন

মোঙ্গোডিবি কম্পাস অ্যাপ্লিকেশনটি পুনরায় খুলুন:

এবং এটি আপনাকে ইউআরআই স্ট্রিং সনাক্তকরণের বিকল্প / পপআপ দেবে: হ্যাঁ ক্লিক করুন ইউরি স্ট্রিং সনাক্ত হয়েছে

শেষ ধাপ:

আপনার নতুন পাসওয়ার্ড এবং সংযোগ দিন । এখন আপনার সংযোগটি সফল হওয়া উচিত।নতুন পাসওয়ার্ড লিখুন এবং সংযুক্ত করুন




0

আমি অজগরটিতে এটি চেষ্টা করছিলাম এবং আমারও তেমন ত্রুটি হয়েছিল। এটি আমার পক্ষে কাজ করেছে।

import pymongo

client = pymongo.MongoClient("mongodb://username:12%40password@ip:27017/sample_db") 
db = client.sample_db
# print the number of documents in a collection
print(db.collection.count())

12% 40 পাসওয়ার্ডটি আপনার পাসওয়ার্ডটি উপস্থাপন করে এবং ধরে নেয় এটির একটি বিশেষ অক্ষর রয়েছে (যেমন @ -% 40 দ্বারা উপস্থাপিত) - ব্যবহারকারীর নামটি আপনার মঙ্গডব ব্যবহারকারীর নাম, আইপি - আপনার আইপি ঠিকানা এবং নমুনা_ডিবি মংডব এর নীচে ডাটাবেস যা আপনি সংযোগ করতে চান।


0

এই আমার জন্য কাজ করে

এটি একটি মোঙ্গোডিবি 2020 আপডেট Update আপনি যদি একটি পৃথক এনভিলিভ ফাইল ব্যবহার করেন তবে কেবল আপনার যুক্ত করুন

mongoose.connect('url',
{
    useNewUrlParser: true, 
    useUnifiedTopology: true 
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.