مرحبًا ، أنا أحاول تشغيل موقع ويب تم إرساله إلي ولكن بعد ظهور هذا الخطأ
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
بعد Googling تقول أنني أحتاج فقط لإضافة إدخال في ملف 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
ولكن بعد القيام بذلك ، لا يزال الخطأ مستمرا. قمت بإعادة تشغيل خادم XAMPP عدة مرات ولكن لم تظهر أي تغييرات. شكرا مقدما
قم بإضافة أو تحرير السطر التالي في postgresql.conf
:
listen_addresses = '*'
أضف السطر التالي باعتباره السطر الأول من pg_hba.conf
. يسمح بالوصول إلى جميع قواعد البيانات لجميع المستخدمين بكلمة مرور مشفرة:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
Host all all 0.0.0.0/0 md5
أعد تشغيل Postgresql بعد إضافة هذا بـ service postgresql restart
أو الأمر المكافئ للإعداد الخاص بك.
يعمل هذا الحل مع IPv4/IPv6
nano /var/lib/pgsql/data/pg_hba.conf
Host all all ::1/128 md5
Host all postgres 127.0.0.1/32 md5
ثم قم بإعادة تشغيل خدمة postgresql
/etc/init.d/postgresql restart
الطريقة التي حللت بها كانت:
تمت إضافة السطر على النحو التالي في pg_hba.conf
:
hostnossl all all 0.0.0.0/0 trust
وتم تعديل هذا في postgresql.conf
، كما هو موضح:
listen_addresses = '*'
كان لدي هذا المثال يعمل على Centos 7. و Postgres 9.5 في VM في Azure ، بالنظر إلى هذا كان POC (دليل على المفهوم) لن ترغب في الاتصال بدون SSL في بيئة المنتج الفعلية الخاصة بك.
للاتصال بالمثيل الذي كنت أستخدمه pgAdmin 4 على macOS Sierra.
Fresh Postgres 9.5 install، Ubuntu.
كان المفتاح --- local نوع الاتصال ، حيث يستخدم psql اتصال مقبس المجال.
pg_hba.conf
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all md5
Host all all 0.0.0.0/0 md5
أضف السطر التالي في أسفل pg_hba.conf
:
hostnossl all all 0.0.0.0/0 md5
إضافة/تعديل السطر في postgresql.conf
:
listen_addresses = '*'
تأكد من أن المستخدم المتصل لديه كلمة مرور: (على سبيل المثال ، قم بتوصيل مستخدم باسم postgres
)
أ. قم بتشغيل الأمر psql
التالي باستخدام حساب المستخدم postgres
:
Sudo -u postgres psql postgres
ب. قم بتعيين كلمة المرور:
# \password postgres
حدث لي نفس الخطأ عندما حاولت الاتصال بقاعدة بيانات محلية باستخدام نفق SSH. لقد قمت بحلها عن طريق تغيير اسم المضيف من localhost
إلى 127.0.0.1
.
تعليمات لمستخدمي دبيان.
تسجيل الدخول كمستخدم posgres:
$ 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
أعد تشغيل خادم postgres لتصبح التغييرات سارية المفعول:
$ Sudo systemctl restart postgresql
ابحث عن ملف التكوين الصحيح:
su - postgres -c "psql -t -P format=unaligned -c 'show hba_file';"
أضف ما يلي في نهاية الملف:
local all all peer
ثم أعد تشغيل تطبيق PostgreSQL:
/bin/systemctl restart postgresql*.service
عملت هذه لي أدناه: (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
ثقة
السماح بالاتصال دون قيد أو شرط. تسمح هذه الطريقة لأي شخص يمكنه الاتصال بخادم قاعدة بيانات PostgreSQL بتسجيل الدخول مثل أي مستخدم PostgreSQL يرغب فيه ، دون الحاجة إلى كلمة مرور أو أي مصادقة أخرى.
mD5
مطالبة العميل بتوفير كلمة مرور مزدوجة التجزئة لـ MD5 للمصادقة.
الرجوع لمزيد من هنا
في حالتي ، اضطررت إلى إضافة السطر بالضبط كما هو مقترح في معلومات الخطأ. لا يمكن تجاوزه بإضافة "جميع" المستخدمين مع جميع عناوين IP كقاعدة. الآن مثل:
PosgreSQL 10.5 على CentOS 7.
# IPv4 local connections:
Host all all 127.0.0.1/32 md5
Host <db_name> postgres <my_client_machine_ip>/32 md5