জাগানো পোস্টগ্র্রেএসকিউএলএর সংযোগ: "পিয়ার প্রমাণীকরণ ব্যর্থ হয়েছে"


120
OperationalError at /admin/

FATAL:  Peer authentication failed for user "myuser"

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

অতএব, আমি অনুভব করেছি যে আমি পোস্টগ্রেএসকিউএল ইনস্টল করার প্রক্রিয়াটি পেরিয়ে যেতে পারি, চালিয়ে যাব syncdbএবং প্রস্তুত থাকব।

সমস্যাটি হ'ল আমি আমার অ্যাপ্লিকেশনটিকে ডেটাবেসের সাথে সংযুক্ত করার কথা মনে করতে পারি না। আমি যে কমান্ড লাইন বা ডেস্কটপ অ্যাপ্লিকেশনটি ডাউনলোড করেছি তার মাধ্যমে আমি পোস্টগ্রাইএসকিউএল-এ লগইন করতে পারি। শুধু স্ক্রিপ্ট না।

এছাড়াও, আমি manage.py shellডিবিটি ঠিকঠাক অ্যাক্সেস করতে ব্যবহার করতে পারি ।

কোন চিন্তা?

উত্তর:


218

আমি ব্যতিক্রমটি দেখেছিলাম, লক্ষ্য করেছি এটির আমার সংযোগ সেটিংসের সাথে সম্পর্কযুক্ত। পিছে চলে গেল settings.py হল এবং বুঝতে পারল আমি একটি হোস্ট সেটআপ ছিল না। যোগ করুন localhostএবং voila।

আমার সেটিংস.পিসির মাইএসকিউএল ডাটাবেসের জন্য একটি হোস্ট ছিল না, তবে পোস্টগ্র্রেএসকিউএল এর কাজ করার জন্য আমার একটি যোগ করা দরকার।

আমার ক্ষেত্রে, আমি যোগ localhostকরতে HOSTসেটিং এবং এটা কাজ করে।

এখানে DATABASESআমার থেকে বিভাগ settings.py

DATABASES = { 
    'default': { 
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': '<MYDATABASE>', 
        'USER': '<MYUSER>', 
        'PASSWORD': '<MYPASSWORD>', 
        'HOST': 'localhost', # the missing piece of the puzzle 
        'PORT': '', # optional, I don't need this since I'm using the standard port
    } 
}

5
আপনি আপনার প্রশ্ন থেকে সমাধানটি আপনার উত্তরের দিকে নিয়ে যেতে (এবং এটি স্বীকার করার জন্য) বিবেচনা করতে পারেন। এইভাবে, প্রশ্নটি একটি প্রশ্ন থেকে যাবে এবং এটি সঠিকভাবে উত্তর সরবরাহ করবে। বিটিডব্লিউ: ভাল কাজ! :-)
পাইওটর নওকি

3
একটি রেলস অ্যাপ্লিকেশনটিতে একই সমস্যা ছিল, এবং এটি একই সমাধান ছিল - হোস্টটির কনফিগার করা দরকার ছিল config/database.yml- অর্থাৎ এই ফাইলটিতে আমার লাইনটি যুক্ত করতে হবে host: localhost(বা আপনি যেখানে সার্ভার পোস্টগ্রিজ করেন - আমার স্থানীয় ছিল)
jefflunt

7
HOST টি ফাঁকা থাকলে, জাঙ্গো ইউনিক্স সকেট ব্যবহার করে ডাটাবেসের সাথে সংযোগ স্থাপনের চেষ্টা করে। অন্যদিকে, যখন HOST "লোকালহোস্ট" হয়, এটি টিসিপি / আইপি এর মাধ্যমে 127.0.0.1 এ সংযোগ করে। সম্ভবত, আপনার pg_hba.confসাধারণ ব্যবহারকারীদের ইউএনআইএক্স সকেটের মাধ্যমে সংযোগ স্থাপন থেকে অস্বীকার করার জন্য সেট আপ করা হয়েছে তবে লোকালহোস্ট থেকে তাদের টিসিপি / আইপি দিয়ে অনুমতি দেয়।
জিম গ্যারিসন

3
ডকুমেন্টেশন ( docs.djangoproject.com/en/1.6/ref/settings/#host ) মিথ্যা: "HOST [...] একটি খালি স্ট্রিং মানে লোকালহোস্ট"। এটি সত্য নয়, আমারও একই সমস্যা ছিল এবং আমি এটি 'লোকালহোস্ট' লিখে স্থির করেছিলাম। বখশিষের জন্য ধন্যবাদ.
মার্কো সুল্লা

1
আহ হা! আমি জানতাম আমি পাসওয়ার্ড জানতাম। মেজানাইন একটি local_settings.pyফাইল তৈরি করে এবং এটি # Set to empty string for localhost. Not used with sqlite3.তাদের মধ্যে রয়েছে। এই ব্যবস্থার সবচেয়ে গুরত্বপূর্ণ !!!
টিউয়ুয়ান

23

এটি সম্ভবত কারণ আপনার স্ক্রিপ্টটি আপনি ব্যবহার করার চেষ্টা করছেন তার চেয়ে কিছু অন্য ব্যবহারকারীর অধীনে চলছে ( মাইউজার এখানে)। এই ক্ষেত্রে, পিয়ার প্রমাণীকরণ ব্যর্থ হবে। HOST: "localhost"কাজের সাথে আপনার সমাধান কারণ আপনি আর পিয়ার প্রবন্ধ ব্যবহার করছেন না। তবে এটি HOST: ""ইউনিক সকেট ব্যবহারের পরিবর্তে টিসিপি সংযোগগুলি ব্যবহার করার চেয়ে ধীর । জ্যাঙ্গো ডক্স থেকে :

আপনি যদি PostgreSQL ব্যবহার করেন, ডিফল্টরূপে (খালি HOST), ডাটাবেসের সাথে সংযোগটি ইউনিক্স ডোমেন সকেটের (pg_hba.conf- এ 'স্থানীয়' লাইন) মাধ্যমে সম্পন্ন হয়। আপনি যদি টিসিপি সকেটের মাধ্যমে সংযোগ স্থাপন করতে চান তবে 'লোকালহোস্ট' বা '127.0.0.1' (pg_hba.conf- তে 'হোস্ট' লাইন) এ HOST সেট করুন। উইন্ডোজে, আপনার সর্বদা HOST সংজ্ঞায়িত করা উচিত, কারণ ইউনিক্স ডোমেন সকেট উপলব্ধ নেই।

আপনি যদি সকেট ব্যবহার চালিয়ে যেতে চান তবে সঠিক সেটিংস pg_hba.confপ্রয়োজন। সর্বাধিক সহজ:

local   all         all                               trust

অন্য সব মন্তব্য করার সময় localকনফিগারেশনে লাইন । নোট করুন যে এই পরিবর্তনটি কার্যকর হওয়ার জন্য পোস্টগ্রিজ পুনরায় লোড করা প্রয়োজন।

তবে যদি মাল্টি-ইউজার প্রোডাকশন মেশিনটি প্রশ্নে থাকে, আপনি আরও নিরাপদ কিছু ব্যবহার করতে চাইতে পারেন md5( বিভিন্ন প্রমাণীকরণের পদ্ধতির ব্যাখ্যার জন্য এখানে দেখুন )।


14

সম্পূর্ণ বিশ্বাসের চেয়ে ভাল এটি এমডি 5 তে সেট করা।

# "local" is for Unix domain socket connections only
local   all         all                           md5

5
+1 টি; তবে নোট এমডি 5 পাসওয়ার্ডের তুলনায় সাধারণভাবে (সামান্য) ভাল কারণ এটি পাসওয়ার্ডের বিপরীতে হ্যাশ প্রেরণ করবে। ; (কিন্তু যদি এটা সম্ভব আড়িপাতকদের সঙ্গে নেটওয়ার্কের মাধ্যমে করছেন এটা গুরুত্বপূর্ণ যখন স্থানীয় এটা ব্যাপার অনেক না।)
ড jimbob

পোস্টগ্র্রেএসকিউএল যদি পাসওয়ার্ডের হ্যাশগুলিতে লবণের ব্যবস্থা না করে - এবং আমি জানি না এটি হয় কি না - তবে আপনার সংযোগে প্রকৃতপক্ষে শ্রুতিমধুর করার মতো যথেষ্ট পরিশীলিত কেউ সম্ভবত আপনার হ্যাশটিকে একটি রেইনবো টেবিলের মাধ্যমে চালাতে চলেছে এবং কোনওভাবেই আপনার সুরক্ষা ভঙ্গ করবে।
লেন্ডসি সাইমন

"এমডি 5" "বিশ্বাস" এর চেয়ে ভাল তবে "স্থানীয়" সংযোগের জন্য "পিয়ার" ব্যবহার এবং লগইন অনুমতি ছাড়াই একটি লিনাক্স ব্যবহারকারী তৈরি করা সবচেয়ে ভাল। স্থানীয় থেকে ডিবি অ্যাক্সেস করতে আপনাকে এইভাবে আপনার মূল পাসওয়ার্ড সরবরাহ করতে হবে।
মার্কো সুল্লা

6

আমি এটি /etc/postgres/9.1/main/pg_hba.conf এর নীচেটি সম্পাদনা করে ঠিক করেছি (বিশ্বাসে এমডি 5 পরিবর্তন করছি; দ্রষ্টব্য এর অর্থ কোনও ডাটাবেস পাসওয়ার্ড থাকবে না, যা আপনি চান তা নাও হতে পারে)

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
# IPv6 local connections:
host    all         all         ::1/128               trust

5

আমি কেবল একই সমস্যার জন্য হোঁচট খেয়েছি তবে ক্লাইমের কথা মতো ইউনিক্স সকেট ব্যবহার করতে চেয়েছিলাম, তবে এখনও peerপদ্ধতিটি ব্যবহার করে । আমি আমার সিস্টেম-ব্যবহারকারীর সাথে পোস্টগ্রিস-ব্যবহারকারীর নামটি ম্যাপ করেছি pg_hba.confযার সাথে কাজ করছেpeer পদ্ধতিটি ।

ভিতরে pg_hba.confআমি যুক্ত করেছি:

local all all peer map=map-name

ভিতরে pg_ident.confআমি যুক্ত করেছি:

map-name mysystem-username mypostgres-username
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.