প্রশ্ন pg_dump: [archiver (db)] ডাটাবেসের সাথে সংযোগ ব্যর্থ হয়েছে: FATAL: ব্যবহারকারীর "পোস্টগেস" ব্যবহারকারীর পক্ষে পিয়ার প্রমাণীকরণ ব্যর্থ হয়েছে।


আমি আমার পোস্টগেস ডিবি অন্য সার্ভারে ব্যাকআপ করার চেষ্টা করছি কিন্তু আমি অ্যাক্সেস অস্বীকার করতে থাকি।

আমার pg_hba.conf ফাইল এই রকম দেখাচ্ছে:

# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5

আমি পোস্টার সেটিংটি PEER থেকে TRUST এ পরিবর্তন করলে, আমি কোডটি ব্যাকআপ করতে পারি তবে ওয়েব সাইটটি আর ডেটাবেসে অ্যাক্সেস করতে পারে না (SSL ত্রুটি সম্পর্কে কিছু যা আমি জানি না এটি সমস্যা নয়)।

যখন আমি এটি ছেড়ে চলে যাই, PEER, সার্ভার কাজ করে - php db অ্যাক্সেস করতে পারে - তবে ব্যাকআপ চালানোর চেষ্টা করার সময় আমি ত্রুটি পেতে পারি:

root> pg_dump -U postgres tablename> test.sql

.pg_dump: [archiver (db)] ডাটাবেসের সাথে সংযোগ "tablename" ব্যর্থ হয়েছে: FATAL: ব্যবহারকারীর "postgres" ব্যবহারকারীর পক্ষে পিয়ার প্রমাণীকরণ ব্যর্থ হয়েছে।

পিএইচপি Apache ওয়েব সাইট যথাযথ ব্যবহারকারীর নাম এবং পাসওয়ার্ড ব্যবহার করে।

ব্যাকআপ স্ক্রিপ্টটি এরকম দেখাচ্ছে: pg_dump -U postgres tablename> test.sql

কিভাবে আমি উভয় ওয়েব সাইট এবং ব্যাকআপ স্ক্রিপ্ট সন্তুষ্ট করতে পারি যাতে আমি উভয় রান করতে পারি?

সম্পূর্ণ স্ক্রিপ্ট চেষ্টা এই হল: ssh সার্ভার "pg_dump -U postgres tablename | gzip -c"> /backup/sqlbackup.sql.gz

সার্ভার ফল্ট থেকে নেওয়া ssh দূরবর্তী কমান্ড-FU


5
2018-01-09 17:10


উত্স




উত্তর:


আপনার পিএইচপি আপাচি ওয়েব সাইট সঙ্গে কাজ করে peer, এই রাখা, এবং এর সাথে মোকাবিলা করা যাক।

1. প্রথম পদ্ধতি:

প্রমাণীকরণ পিয়ার ভিত্তিক হিসাবে, আপনি হোস্টনাম (সাধারণত স্থানীয় হোস্ট) ব্যবহার করে উল্লেখ করতে হবে -h বিকল্প:

ssh server "pg_dump -h localhost -U postgres | gzip -c" >/backup/sqlbackup.sql.gz

এখানে প্রধান সমস্যাটি হল পোস্টগেট ব্যবহারকারীর পাসওয়ার্ডের জন্য আপনাকে অনুরোধ করা হবে। এটি ব্যাকআপ অটোমেশন জন্য একটি সমস্যা।

আপনি উল্লেখ করতে পারেন এই পাসওয়ার্ডের জন্য অনুরোধ করা এড়ানোর জন্য। কিন্তু আমি বর্ণনা করবো:

  1. নামে একটি লুকানো ফাইল তৈরি করুন .pgpass মধ্যে $HOME
  2. একটি সঞ্চালন করুন chmod 600 .pgpass
  3. ফাইল সম্পাদনা করুন .pgpass এবং এই লাইন যোগ করুন: localhost:5432:postgres:postgres:password

2. দ্বিতীয় পদ্ধতি:

আপনি ব্যাকআপগুলির জন্য একটি নির্দিষ্ট ভূমিকা যোগ করতে এবং এটিতে বিশ্বাস করতে পারেন।

Postgres মধ্যে ব্যাকআপ ভূমিকা তৈরি করুন:

CREATE ROLE backup WITH LOGIN SUPERUSER PASSWORD 'password'

ফাইল সম্পাদনা করুন pg_hba.confভূমিকা যোগ করুন backup এবং trust এটা:

# Database administrative login by Unix domain socket
local   all             postgres                                peer
local   all             backup                                  trust

আবার শুরু postgresql

তারপর আপনি নিম্নলিখিত সঙ্গে ব্যাকআপ চালাতে সক্ষম হওয়া উচিত:

ssh server "pg_dump -U backup postgres | gzip -c" >/backup/sqlbackup.sql.gz

9
2018-01-09 19:07