আমি শেল থেকে pg_hba.conf যাওয়ার পথটি কীভাবে খুঁজে পাব?


101

আমি শেল থেকে pg_hba.conf যাওয়ার পথটি পেতে চাই। পোস্টটি পোস্টগ্রেএসকিউএল এর সংস্করণগুলির মধ্যে পরিবর্তিত হয়। উদাহরণস্বরূপ, 8.4 এবং 9.1 এর জন্য:

/etc/postgresql/8.4/main/pg_hba.conf
/etc/postgresql/9.1/main/pg_hba.conf

আমি pg_configকমান্ডটি চেষ্টা করেছি , তবে মনে হয় না যে এই তথ্যটি অন্তর্ভুক্ত রয়েছে।

এটি যাতে আমি pg_hba.confসম্পাদনা করার জন্য খোলার জন্য এবং অন্যান্য PostgreSQL কনফিগারেশন ফাইলগুলির জন্য একটি অভিন্ন কমান্ড ব্যবহার করতে পারি ।

আমি ব্যাশ ব্যবহার করছি


1
Pg_hba.conf কীভাবে সনাক্ত করবেন?
প্রমোদ

1
@ প্রমোদ তাদের প্রায় দশটি পড়ে থাকতে পারে। যদি আপনি জানতে চান যে তাদের মধ্যে কোনটি পোস্টগ্র্রেস ব্যবহার করছেন।
রক্তক্ষরণ আঙ্গুলগুলি

আপনার ব্ল্যাকিংফিনগারগুলি আপনার সেটআপের উপর নির্ভর করে অ্যাক্সেসের সময় আপনি সম্ভবত ফিল্টার করতে পারবেন। find / -name pg_hba.conf -amin -5(যদি সর্বশেষ 5 মিনিটে সার্ভারটি পুনরায় চালু করা হয়; এটি -atimeদীর্ঘকাল আগে পুনরায় চালু হয়ে থাকলে এটিতে পরিবর্তন করা যথেষ্ট সহজ )। অথবা আপনি অ্যাক্সেস টাইম পরিবর্তনের সময় পরিবর্তনের চেয়ে আরও নতুন ফিল্টার করতে পারবেন বা অন্য একটিতে সময় ভিত্তিক বিকল্পগুলি সন্ধান করুন ... (যদিও lsof | grep pg_hba.confকোনও সার্ভারের চলমান চলাকালীন ফিল্টারিং কাজ করে না)।
পার্থিয়ান শট

উত্তর:


151

pg_configপ্রশংসার তথ্য, এক্সটেনশন এবং ক্লায়েন্ট প্রোগ্রামগুলিকে সংকলন করতে এবং পোস্টগ্রেএসকিউএল এর সাথে লিঙ্ক করতে সহায়তা করার জন্য। এটি মেশিনে সক্রিয় পোস্টগ্রিজ এসকিউএল উদাহরণ (গুলি) সম্পর্কে কিছুই জানে না, কেবল বাইনারি।

pg_hba.confPg কীভাবে ইনস্টল করা হয়েছিল তার উপর নির্ভর করে আরও অনেক জায়গায় উপস্থিত হতে পারে। মান অবস্থান হয় pg_hba.confমধ্যে data_directory(যা হতে পারে ডেটাবেসের /home, /var/lib/pgsql, /var/lib/postgresql/[version]/, /opt/postgres/কিন্তু ব্যবহারকারী এবং packagers এটা করা যেখানেই তারা পছন্দ করতে পারেন, ইত্যাদি ইত্যাদি ইত্যাদি)। দুর্ভাগ্যবশত।

সন্ধানের একমাত্র বৈধ উপায় pg_hba.confহ'ল চলমান পোস্টগ্রেএসকিউএল উদাহরণটি এটি কোথায় রয়েছে তা pg_hba.confজিজ্ঞাসা করা, বা সাসাদমিনকে এটি কোথায় তা জিজ্ঞাসা করা। এমনকি ডেটাডির কোথায় রয়েছে তা জিজ্ঞাসা করে এবং পার্সিংয়ের উপর নির্ভর করতে পারবেন না postgresql.confকারণ -c hba_file=/some/other/pathপিজি শুরু করার সাথে সাথে কোনও এনআর স্ক্রিপ্ট প্যারাম পেরিয়ে যেতে পারে ।

আপনি যা করতে চান তা পোস্টগ্রাইএসকিউএলকে জিজ্ঞাসা করুন:

SHOW hba_file;

এই কমান্ডটি অবশ্যই একটি সুপারসুজার সেশনে চালানো উচিত, সুতরাং শেল স্ক্রিপ্টিংয়ের জন্য আপনি এমন কিছু লিখতে পারেন:

psql -t -P format=unaligned -c 'show hba_file';

ও বিভিন্ন পরিবেশের সেট PGUSER, PGDATABASEইত্যাদি তা নিশ্চিত করার জন্য সংযোগ অধিকার।

হ্যাঁ, এটি কিছুটা মুরগি ও ডিমের সমস্যা, এর মধ্যে যদি ব্যবহারকারী সংযোগ স্থাপন করতে না পারে (বলুন, সম্পাদনা স্ক্রু করার পরে pg_hba.conf) আপনি এটি pg_hba.confঠিক করার জন্য খুঁজে পেতে পারেন না ।

আর একটি বিকল্প হ'ল psকমান্ডের আউটপুটটি দেখুন এবং সেখানে পোস্টমাস্টার ডেটা ডিরেক্টরি আর্গুমেন্টটি -Dদৃশ্যমান কিনা তা উদাহরণস্বরূপ

ps aux  | grep 'postgres *-D'

যেহেতু pg_hba.confডেটা ডিরেক্টরিতে থাকবে (আপনি দেবিয়ান / উবুন্টু বা কিছু ডেরাইভেটিভ এবং তাদের প্যাকেজগুলি ব্যবহার না করে) inside

আপনি যদি ডেবিয়ান / উবুন্টু প্যাকেজগুলি থেকে ইনস্টল করা পোস্টগ্র্রেএসকিউএল দ্বারা উবুন্টু সিস্টেমগুলিকে নির্দিষ্ট করে লক্ষ্য করে থাকেন তবে এটি কিছুটা সহজ হয়ে যায়। initdbকারওর হাতের সংকলিত-উত্স পিজির সাথে আপনাকে কোনও হস্তান্তর করতে হবে না যে কারও বাড়ির দির জন্য 'দা দাতাদির' বা কোনও এন্টারপ্রাইজডিবি পিজি ইন / অপ্ট ইন ইনস্টল করুন ইত্যাদি আপনি জিজ্ঞাসা করতে পারেন pg_wrapper, দেবিয়ান / উবুন্টু মাল্টি সংস্করণ Pg ম্যানেজার, যেখানে পোস্টগ্রি ব্যবহার করছে কমান্ড থেকে ।pg_lsclusterspg_wrapper

আপনি যদি সংযোগ স্থাপন করতে না পারেন (পিজি চলছে না, বা pg_hba.confসংযোগের জন্য আপনাকে সম্পাদনা করতে হবে) আপনাকে pg_hba.confফাইলগুলির জন্য সিস্টেমটি অনুসন্ধান করতে হবে । ম্যাক এবং লিনাক্সে এর মতো কিছু sudo find / -type f -name pg_hba.confকরবে। তারপরে PG_VERSIONএকই ডিরেক্টরিতে ফাইলটি পরীক্ষা করে দেখুন এটি ঠিক পোস্টগ্রিএসকিউএল সংস্করণ আপনার যদি একাধিক থাকে তবে তা সঠিক। (যদি pg_hba.confথাকে /etc/, এই উপেক্ষা, এটা পেরেন্ট ডাইরেক্টরি নাম পরিবর্তে এর)। একই পোস্টগ্রাইএসকিউএল সংস্করণের জন্য যদি আপনার একাধিক ডেটা ডিরেক্টরি থাকে তবে আপনাকে ডাটাবেস আকার psদেখতে হবে , চলমান পোস্টগ্রাসের কমান্ড লাইনটি পরীক্ষা করে দেখুন যে এটি -Dসম্পাদনা করছে যেখানে ডেটা ডিরেক্টরি আর্গুমেন্টের সাথে মেলে কিনা ।


এটি 9.3-র জন্য বৈধ হবে না, আমি পেয়েছি: psql: invalid port number: "format=unaligned"যখন আমি এই পিএসএইচএল কমান্ডটি চালাই।
jcollum

@ জ্যাকলাম নাপ, কেবল একটি টাইপো। -Pনা -p। সংশোধন করা হয়েছে।
ক্রেগ রিঞ্জার

এটিই কেবলমাত্র উত্তর যা আপনার পোস্টগ্র্রেএসকিউএল এর একাধিক সংস্করণ ইনস্টল করা থাকলে কাজ করে।
Bonh

এটি কি মানসম্মত করার জন্য পোস্টসের কোন আশা আছে? যা ইনস্টলেশন ব্যবস্থায় প্রচুর মাথাব্যথা করতে সহায়তা করবে ...
স্কট স্কাইলস

@ স্কটস্কিলস পোস্টগ্রিএসকিউএল এটি নিয়ন্ত্রণ করে না, এটি প্যাকেজগুলি এবং বিতরণকারীদের উপর নির্ভর করে যাদের এটি কোথায় হওয়া উচিত সম্পর্কে সবার দৃ strong় (এবং ভিন্ন) মতামত রয়েছে।
ক্রেগ রিঞ্জার

21

আমি এটি এইভাবে করি:

john@host:~$ ls /etc/postgresql
9.1
john@host:~$ sudo vim /etc/postgresql/9.1/main/pg_hba.conf

পথটি যেমন: /etc/postgresql/[VERSION]/main/pg_hba.conf


2

কনফিগার ফাইল সনাক্তকরণের জন্য আমি নিম্নলিখিতটি ব্যবহার করছি:

$(ls /etc/postgresql/*/main/pg_hba.conf)
$(ls /etc/postgresql/*/main/postgresql.conf)

1

pg_hba.confআপনার ডিফল্ট ভিজ্যুয়াল সম্পাদক (ভিম, ইমাসস, ন্যানো, জো ইত্যাদি) দিয়ে সঠিক সম্পাদনা করা যতটা সহজ:

$VISUAL /etc/postgresql/$(ls /etc/postgresql)/main/pg_hba.conf



-2

ফাইলটি কেবল কোথায় টাইপ করা হয়েছে তা জানতে:

pg_lsclusters

আপনি যদি pg_hba.conf ফাইলটি আপডেট করতে চান তবে নীচের কমান্ডটি জারি করুন: $ sudo nano /etc/postgresql/9.1/main/pg_hba.conf
nirvanastack

-বাশ: pg_lsclusters: কমান্ড পাওয়া যায় নি
মোনা জালাল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.