পোস্টগ্রাস এসকিউএল সহ .pgpass কাজ করছে না


13

আমি /folder/.pgpass এ একটি .pgpass ফাইল রেখেছি এবং এটি দেখতে এটির মতো দেখাচ্ছে

*:*:*:postgres:password_for_postgres

আমার একটি বাশ স্ক্রিপ্ট রয়েছে যেখানে আমি পোস্টগ্রিজ এসকিউএল থেকে ডাটাবেসটিকে ব্যাকআপ করি:

#!/bin/bash
export PGPASSFILE=/folder/.pgpass
echo $PGPASSFILE
pg_dump --username=postgres --format=c --file=/backup/db/db.sqlc database

যাইহোক, স্ক্রিপ্টটি এখনও আমাকে পাসওয়ার্ডের জন্য উত্সাহ দেয়। পিজিপিএএসএফআইএল এর যতদূর মান হওয়া উচিত, আমি যতদূর দেখতে পাচ্ছি। সমস্যা কি হতে পারে তার কোনও ইঙ্গিত?

/ কে

উত্তর:


8

Pgpass ফাইলটি কি 0600 মোডে সেট করা আছে (যেমন কেবল মালিকের দ্বারা পড়ুন / লিখুন)? ক্লায়েন্ট লাইব্রেরি এটি গোষ্ঠী- বা বিশ্ব-পঠনযোগ্য হলে তা এড়িয়ে যাবে।


5

আমার কনফিগারেশনে ( Ubuntu 10.04.3এবং PostgreSQL 8.4), আমি লগইন করে থাকা ব্যবহারকারীর .pgpassনামটির জন্য ফাইলটি থেকে পাসওয়ার্ড নেওয়ার চেষ্টা করার মত একইরকম হয় ।

লগ ইন হিসাবে deployer, আমি .pgpassকোনও ব্যবহারকারীর নামের মালিকানাধীন ডেটাবেস অ্যাক্সেস করতে ফাইলটি ব্যবহার করার চেষ্টা করছিলাম appname, যার কোনও ইউনিক্স সমতুল্য নেই। আমি আমার ডেটাবেস অ্যাক্সেস করতে ব্যবহারকারী হিসাবে .pgpassব্যবহার শুরু না করা পর্যন্ত আমি কাজটি করতে পারি না deployer...

এখানে আমার /home/deployer/.pgpassফাইল সামগ্রী:

*:*:*:deployer:password

এখানে একটি অংশ /etc/postgresql/8.4/main/pg_hba.conf:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD                                                

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

যেমন আপনি দেখতে পাচ্ছেন, আমার সমস্ত সংযোগের জন্য পাসওয়ার্ড প্রয়োজন ( md5)।

এই কনফিগারেশনটি ধরে নিয়ে, এই কমান্ডটি দিয়ে আমার তৈরি একটি ডেটাবেস রয়েছে বলে ধরে নেওয়া:

deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname

আমি কোনও পাসওয়ার্ড প্রবেশ না করেই নিম্নলিখিত ক্রিয়াকলাপটি সম্পাদন করতে সক্ষম হয়েছি:

deployer@ubuntu-server:~$ dropdb dbname

যত তাড়াতাড়ি আমি আমার নাম পরিবর্তন যেমন .pgpassকরতে .pgpass-no, এটি একটি পাসওয়ার্ড প্রয়োজন হবে।

বিটিডাব্লু, আপনার .pgpassফাইলটি অবশ্যই অনুমতিাধীন থাকতে হবে তা ভুলে যাবেন না 0600:

deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass

2
ব্যবহার করে আপনি যেমন সংযোগ করতে PG ব্যবহারকারী নিয়ন্ত্রণ করতে পারেন -Uপতাকা dropdbএবংcreatedb
কেভিন হর্ন

0

1) সামগ্রী সহ .pgpass ফাইল তৈরি করুন

হোস্ট: 5432: somedb: someuser: somepass

2) কমান্ড ব্যবহার করে অনুমতি সেট করুন

sudo chmod 600 .pgpass

3) আপনি যে লগ ইন করেছেন ব্যবহার করে ফাইলের মালিককে একই ব্যবহারকারী হিসাবে সেট করুন:

sudo chown login_username: login_username .pgpass

4) পিজিপিএএসফিল পরিবেশের পরিবর্তনশীল সেট করুন:

PGPASSFILE = '/ home / user / .pgpass' রফতানি করুন

এখন ডাটাবেসের সাথে সংযুক্ত করে পরীক্ষা করুন:

psql -h হোস্ট -U someuser somedb

আমি পাসওয়ার্ডের জন্য প্রম্পট করব না এবং পোস্টগ্রেসকিএল-এ লগ ইন করব।

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