পোস্টগ্রাইএসকিউএল সার্ভারের সাথে সংযোগ করুন: ফ্যাটাল: হোস্টের জন্য pg_hba.conf এন্ট্রি নেই


178

হ্যালো আমি আমার কাছে প্রেরিত একটি ওয়েবসাইট চালানোর চেষ্টা করছি তবে তা করার পরে এই ত্রুটিটি উপস্থিত হয়েছিল

connect to PostgreSQL server: FATAL: no pg_hba.conf entry for host "4X.XXX.XX.XXX", user "userXXX", database "dbXXX", SSL off in C:\xampp\htdocs\xmastool\index.php on line 37

এটি গুগল করার পরে এটি বলেছে যে সেই নির্দিষ্ট ব্যবহারকারীর জন্য আমার কেবল pg_hba.conf ফাইলটিতে একটি এন্ট্রি যুক্ত করা দরকার। এটি আমার pg_hba.conf ফাইল।

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# IPv4 local connections:
local dbXXX userXXX md5
host    dbXXX  userXXX  XX.XXX.XXX.XXX           md5
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.
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5

তবে এটি করার পরেও ত্রুটিটি এখনও অব্যাহত রয়েছে। আমি আমার এক্সএএমপিপি সার্ভারটি বেশ কয়েকবার পুনরায় চালু করেছি তবে কোনও পরিবর্তন দেখা যায় না। আগাম ধন্যবাদ


আপনি কি কেবল ওয়েব সার্ভার নয়, পোস্টগ্র্রেএসকিউএল এর পুনরায় চালু করেছেন? ব্যবহার করে দেখুন SELECT pg_reload_conf()
ক্রেগ রিঞ্জার

উত্তর:


220

আপনার নিম্নলিখিত লাইনটি যুক্ত বা সম্পাদনা করুন postgresql.conf:

listen_addresses = '*'

প্রথম লাইন হিসাবে নিম্নলিখিত লাইন যুক্ত করুন pg_hba.conf। এটি এনক্রিপ্ট করা পাসওয়ার্ড সহ সমস্ত ব্যবহারকারীর জন্য সমস্ত ডাটাবেসে অ্যাক্সেসের অনুমতি দেয়:

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
host  all  all 0.0.0.0/0 md5

service postgresql restartএটি আপনার সেটআপের জন্য সমতুল্য কমান্ডের সাথে যুক্ত করার পরে পোস্টগ্র্যাসকিএল পুনরায় আরম্ভ করুন।


5
নোট করুন যে এটি কাজ করার জন্য, ব্যবহারকারীর জন্য অবশ্যই একটি পাসওয়ার্ড সেট করা থাকতে হবে : sudo -u <username> psql postgresতারপরে \passwordফলাফল এসকিএল প্রম্পটে একটি সেট করার জন্য অনুরোধ জানাবে।
আইজোসেফ

2
এটি যুক্ত করার পরে
পোস্টগ্র্যাসকিএল

আপনি যদি বেসরকারী ডোমেনগুলিতে সংযোগ সীমাবদ্ধ করার জন্য কিছুটা অতিরিক্ত সুরক্ষা চান (যেমন কোনও অফিসের মধ্যে, এবং ইন্টারনেটের বাকি অংশ নয়), আপনার নেটওয়ার্কের সাথে মেলে আপনি প্রথম সংখ্যাটি 10, 172 বা 192 এ পরিবর্তন করতে পারেন: উদাহরণস্বরূপ 172.0। ০.০ / ০.০ এর পরিবর্তে ০.০.০.০/0.২০১ N
ওয়ানার

22

এই সমাধানটি আইপিভি 4 / আইপিভি 6 এর জন্য কাজ করে

ন্যানো /var/lib/pgsql/data/pg_hba.conf

চূড়ান্ত যোগ করুন

host all all      ::1/128      md5
host all postgres 127.0.0.1/32 md5

এবং তারপরে পোস্টগ্র্যাস্কিল পরিষেবা পুনরায় চালু করুন

/etc/init.d/postgresql restart

12

আমি যেভাবে সমাধান করেছি তা হ'ল:

নীচে হিসাবে লাইন যুক্ত pg_hba.conf:

hostnossl    all          all            0.0.0.0/0  trust        

এবং এটিতে পরিবর্তিত হয়েছিল postgresql.conf, যেমনটি দেখানো হয়েছে:

listen_addresses = '*'  

আমি এই উদাহরণস্বরূপ একটি চলমান ছিল CentOS 7.3 এবং Postgres 9.5 একটি VM- র মধ্যে নভোনীল দেওয়া এই একটি POC (ধারণার প্রমাণ) আপনি আপনার প্রকৃত শঙ্কু পরিবেশে SSL এর ছাড়া যোগাযোগ স্থাপন করতে হবে না ছিল।

উদাহরণ হিসেবে বলা যায় আমি ব্যবহার করছিলেন সাথে সংযোগ স্থাপন করতে pgAdmin 4 MacOS উপর সিয়েরা


4
কেবল এসএসএলই নয় ... এমন কোনও কিছু যা ধারণার প্রমাণ নয় এবং নেটওয়ার্ক অ্যাক্সেসযোগ্য, আপনি সংযোগগুলিতে বিশ্বাস করবেন না , আপনার কিছু প্রমাণীকরণের প্রয়োজন হবে ।
joanolo

5

টাটকা পোস্টগ্রাস 9.5 ইনস্টল করুন, উবুন্টু।

কীটি স্থানীয় সংযোগের ধরণ ছিল, যেহেতু পিএসএইচএল ডোমেন সকেট সংযোগ ব্যবহার করে।

pg_hba.conf

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
local all all md5
host  all  all 0.0.0.0/0 md5

3

যখন আমি একটি এসএসএইচ টানেল ব্যবহার করে একটি স্থানীয় ডাটাবেসে সংযোগ দেওয়ার চেষ্টা করেছি তখন আমারও একই ত্রুটি হয়েছিল। আমি থেকে হোস্টনেম পরিবর্তন করে এটিকে মীমাংসিত localhostথেকে 127.0.0.1


3
  1. নীচে নীচের লাইনটি যুক্ত করুন pg_hba.conf:

    hostnossl all all 0.0.0.0/0 md5

  2. এতে লাইন যুক্ত / সংশোধন করুন postgresql.conf:

    listen_addresses = '*'

  3. নিশ্চিত করুন যে সংযোগকারী ব্যবহারকারীর একটি পাসওয়ার্ড রয়েছে: (উদাহরণস্বরূপ সংযুক্ত ব্যবহারকারীর নাম দেওয়া হয়েছে postgres)

    ক। ব্যবহারকারী অ্যাকাউন্টের psqlসাথে নিম্নলিখিত কমান্ডটি চালান postgres:

    sudo -u postgres psql postgres

    B ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর. পাসওয়ার্ড সেট করুন:

    # \password postgres

এখানে চিত্র বর্ণনা লিখুন


1
দূরবর্তী সংযোগগুলির জন্য বিশ্বাস ব্যবহার করবেন না
উপস্থাপিত

2

সঠিক কনফিগারেশন ফাইলটি সন্ধান করুন:

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

ফাইলের শেষে নিম্নলিখিতটি যুক্ত করুন:

local all all peer

তারপরে আপনার পোস্টগ্রিগ এসকিউএল অ্যাপ্লিকেশনটি পুনরায় চালু করুন:

/bin/systemctl restart postgresql*.service

1

আমার ক্ষেত্রে, ত্রুটি সম্পর্কিত তথ্য অনুসারে আমাকে সঠিক লাইনটি যুক্ত করতে হয়েছিল। নিয়ম হিসাবে সমস্ত আইপি সহ "সমস্ত" ব্যবহারকারীকে যুক্ত করে এটিকে বাইপাস করা যায় না। এখন এটি মত:

CentOS 7 এ পোস্টগ্রিএসকিউএল 10.5।

# IPv4 local connections:
host    all             all             127.0.0.1/32                    md5
host    <db_name>       postgres        <my_client_machine_ip>/32       md5

1

এটি নীচে আমার পক্ষে কাজ করেছে: (pg_hba.conf)

# TYPE  DATABASE        USER            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            trust
host    all             all             0.0.0.0/0               trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
host    all             all             0.0.0.0/0               trust

আস্থা

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

MD5

প্রমাণীকরণের জন্য ক্লায়েন্টকে একটি ডাবল-এমডি 5-হ্যাশ পাসওয়ার্ড সরবরাহ করতে হবে।

এখানে আরও পড়ুন


0

দেবিয়ান ব্যবহারকারীদের জন্য নির্দেশাবলী।

পোস্টগ্রিজ ব্যবহারকারী হিসাবে লগইন করুন:

$ sudo su - postgres

ডাটাবেসটি জিজ্ঞাসা করে pg_hba.conf এর অবস্থান পান:

$ psql -c "SHOW hba_file;"

              hba_file               
-------------------------------------
/etc/postgresql/11/main/pg_hba.conf
(1 row)

Pg_hba.conf খুলুন:

nano /etc/postgresql/11/main/pg_hba.conf

কনফিগারেশন যুক্ত করুন যেখানে এটি "আপনার আসল কনফিগারেশনটি এখানে রাখুন" বলেছে:

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
host  all  all 0.0.0.0/0 md5

আপনার ব্যবহারকারীকে লগআউট করুন:

$ exit
logout

পরিবর্তনগুলি কার্যকর হওয়ার জন্য আপনার পোস্টগ্রিজ সার্ভারটি পুনরায় চালু করুন:

$ sudo systemctl restart postgresql

-1

এটি কেবল নীচের কনফিগারেশন যুক্ত করার জন্য আমার পক্ষে কাজ করে:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             0.0.0.0/0               md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
host    all             all             0.0.0.0/0               md5


-4

কনফিগারেশন ফাইলে কেবল নিম্নলিখিত ক্রমটি লিখুন:

const 
  pg                = require('pg'),
config          = require('./db-config'),
    dbOption    = {
      host    : ,
      port    : ,
      user    : ,
      password  :,
      database  : 
    },

  pool          = new pg.Pool(dbOption)
  pg.defaults.ssl = true;

এটাই সব. ফাইলটিতে db-configহোস্ট, ব্যবহারকারী, পাসওয়ার্ড এবং ডাটাবেসের স্পেসিফিকেশন ডেটা রয়েছে। এই ছোট পরিবর্তনের সাথে এটি স্থানীয়ভাবে এবং একটি পাস সার্ভিসে (হিরোকু) উভয়ই নিখুঁতভাবে কাজ করে। পুরোপুরি পরীক্ষিত।


এটি (এবং কোথায়) এটি db-config? এটি কি এক্সএএমপিপি কনফিগারেশন ফাইল?
ypercubeᵀᴹ 16
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.