psql: fe_sendauth: কোনও পাসওয়ার্ড সরবরাহ করা হয়নি


19

আমার একটি আপ এবং চলমান PostgreSQL ডাটাবেস আছে। এখন আমি আমার ডাটাবেসে কিছু অপারেশন স্বয়ংক্রিয় করতে চাই তবে পাসওয়ার্ড নিয়ে আমার সমস্যা আছে।

আমি নিম্নলিখিত বাশ স্ক্রিপ্ট ব্যবহার করছি:

#!/bin/bash
export PGPASSWORD="postgres"
sudo -u postgres psql -d pg_ldap -w --no-password -h localhost -p 5432 -t -c "SELECT id FROM radusers WHERE id=1"

আমি যখন ব্যাশ স্ক্রিপ্টটি চালিত করি তখন আমি নিম্নলিখিত ত্রুটিটি পাই:

psql: fe_sendauth: no password supplied

এমনকি আমি আমার হোম ডিরেক্টরিতে .pgpass ফাইলটি কনফিগার করার চেষ্টা করেছি কিন্তু কোনও ফলসই হয়নি:

*:*:*:postgres:postgres

আমি নিম্নলিখিত আদেশটি চালিয়েছি:

sudo chmod 0600 .pgpass

তবুও এটি মনে হয় না যে কোনও পদ্ধতিই কাজ করে। কারও কি কোন ধারণা আছে? আমি কি কিছু করতে ভুলে যাচ্ছি?


1
sudo su -c psql postgres psql ...পরিবর্তে চেষ্টা করুন।
ফ্লপ করুন

.pgpassহয় আপনার হোম ডিরেক্টরীতে? postgresব্যবহারকারীর মধ্যে নেই ?
মাইলেন এ রাদেব

হ্যাঁ এটা আমার হোম ডিরেক্টরির মধ্যে, অর্থাত্ / হোম / server2 /
Alibaba

উত্তর:


15

sudoবেশিরভাগ পরিবেশের ভেরিয়েবল ধরে রাখে না। আপনি যদি কম্যান্ডের অধীনে চালিত কমান্ডের পরিবেশগত পরিবর্তনগুলি নির্দিষ্ট করতে চান sudoতবে তা করুন sudo:

sudo PGPASSWORD="postgres" -u postgres psql -d pg_ldap -w --no-password -h localhost -p 5432 -t -c "SELECT id FROM radusers WHERE id=1"

এটি sudoঅনুমতি দেয় কি না তা আপনার সাইটে কার্যকর নিরাপত্তা নীতির উপর নির্ভর করবে।

কমান্ড-লাইনের ইতিহাসে এবং প্রক্রিয়া তালিকায় পাসওয়ার্ডটি প্রকাশ করার কারণে আমি এই পদ্ধতির প্রস্তাব দিই না। কোনও .pgpassফাইল ব্যবহার করা বা ব্যবহারকারীর কাছ থেকে সংযোগের প্রমাণীকরণের pg_hba.confজন্য peerবেশি পছন্দ করা ভাল ।localpostgres

আপনি একটি .pgpassফাইল ব্যবহার করতে পারেন , তবে এটি অবশ্যই .pgpassআপনার ব্যবহারকারীর হওয়া উচিত sudo, আপনি sudoযে ব্যবহারকারী থেকে প্রবেশ করছেন তা নয় ; ~postgres/.pgpassএই ক্ষেত্রে এটি করা প্রয়োজন । সেটা ভাবুন: psqlচলমান হিসাবে postgresজানেন না আপনি মাধ্যমে এটি দৌড়ে sudoআপনার অ্যাকাউন্ট থেকে, এটা কি আপনার ব্যবহারকারী অ্যাকাউন্টের জানি না, এবং এমনকি যদি তা এটা ব্যবহারকারী হিসাবে পঠিত অনুমতি নেই postgresকরার ~youruser/.pgpass

অতিরিক্ত হিসাবে, -wহিসাবে একই --no-password। উভয় নির্দিষ্ট করে কোন লাভ নেই।


2
আপনি -Eবিকল্পটি ব্যবহার করতে পারবেন যা আপনার পরিবেশ সংরক্ষণ করবে (সহ PGPASSWORD) সেটআপ করতে পারে । এটি প্রক্রিয়া তালিকায় প্রদর্শিত বাধা দেয়।
fukawi2
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.