غير قادر على توصيل PostgresQL إلى قاعدة البيانات عن بعد باستخدام Pgadmin

StackOverflow https://stackoverflow.com/questions/1287067

  •  18-09-2019
  •  | 
  •  

سؤال

قمت بتثبيت postgresql على الخادم المحلي الخاص بي (Ubuntu) مع IP 192.168.10. الآن، أحاول الوصول إلى قاعدة البيانات من آلة العميل الخاصة بي (Ubuntu) مع IP 192.168.1.11 مع Pgadmin.

أعلم أنه لا بد لي من إجراء تغييرات في postgresql.conf و pg_hba.conf للسماح للعميل بالاتصال. هل لك أن ترشدني؟

هل كانت مفيدة؟

المحلول

إنها في الواقع عملية خطوة 3 للاتصال بخادم postgresql عن بعد من خلال pgadmin3.

ملاحظة: أستخدم Ubuntu 11.04 و postgresql 8.4.

  1. عليك أن تجعل PostgresQL الاستماع إلى اتصالات TCP الواردة عن بعد لأن الإعدادات الافتراضية تسمح الاستماع فقط للحصول على اتصالات على واجهة الاسترجاع. لتتمكن من الوصول إلى الخادم عن بعد، عليك إضافة السطر التالي إلى الملف /etc/postgresql/8.4/main/postgresql.conf:

    listen_addresses = '*'

  2. PostgresQL افتراضيا يرفض جميع الاتصالات التي يتلقاها من أي عنوان عن بعد، يجب عليك الاسترخاء هذه القواعد عن طريق إضافة هذا الخط إلى /etc/postgresql/8.4/main/pg_hba.conf:

    المضيف كل الكل 0.0.0.0/0 دينار MD5

    هذه قاعدة مراقبة الوصول التي تدع أي شخص يقوم بتسجيل الدخول من أي عنوان إذا كان بإمكانه تقديم كلمة مرور صالحة (كلمة مرور MD5). يمكنك استخدام الشبكة / القناع اللازمة بدلا من 0.0.0.0/0/0.

  3. عندما تقوم بتطبيق هذه التعديلات على ملفات التكوين الخاصة بك تحتاج إلى إعادة تشغيل خادم postgresql. الآن من الممكن تسجيل الدخول إلى الخادم الخاص بك عن بعد، باستخدام اسم المستخدم وكلمة المرور.

نصائح أخرى

إذا كنت تستخدم postgresql 8 أو أعلى، فقد تحتاج إلى تعديل listen_addresses اضبط /etc/postgresql/8.4/main/postgresql.conf.

حاول إضافة السطر:

listen_addresses = *

مما سيقول postgresql للاستماع إلى الاتصالات على جميع واجهات الشبكة.

إذا لم يتم تعيين غير صريح، فإن هذا الإعداد الافتراضي localhost مما يعني أنه سوف يقبل فقط الاتصالات من نفس الجهاز.

لم يكن لدي لتغيير ملف prostgresql.conf الخاص بي، لكن علي القيام بما يلي استنادا إلى سطر الأوامر PSQL الخاص بي كان الاتصال و Pgadmin لا يربط على RDS مع AWS.

لقد وضعت RDS الخاص بي للوصول علنا. لقد قمت بالتأكد من أن مجموعات ACL والأمن كانت مفتوحة على مصراعيها وما زلت مشكلة لذلك، فعلت ما يلي:sudo find . -name *.confومن بعد sudo nano ./data/pg_hba.confثم تمت إضافته إلى أعلى التوجيهات في ملف pg_hba.conf host all all 0.0.0.0/0 md5و pgadmin تسجيل لي تلقائيا في.

هذا يعمل أيضا في ملف pg_hba.confhost all all md5 دون أي عنوان IP وهذا يعمل أيضا مع عنوان IP الخاص بي host all all <myip>/32 md5

كملاحظة جانبية، كان RDS الخاص بي في VPC الافتراضي الخاص بي. كان لدي مثيل RDS متطابق في VPC غير الافتراضي الخاص بي مع مجموعة أمان متطابقة وإعدادات مجموعة ACL والأمان إلى VPC الافتراضي الخاص بي ولم أستطع الحصول عليها للعمل. لست متأكدا من السبب ولكن، هذا ليوم آخر.

في محطة Linux جرب هذا:

  • sudo service postgresql start : لبدء الخادم
  • sudo service postgresql stop : لإيقاف خادم اليك
  • sudo service postgresql status : للتحقق من حالة الخادم

ل redhat لينكس

sudo vi /var/lib/pgsql9/data/postgresql.conf 

PGSQL9 هو مجلد مثبت إصدار Postgres، قد يكون مختلفا عن الآخرين

تم تغيير listen_addresses = '*' من listen_addresses = 'localhost' وبعد ذلك

sudo /etc/init.d/postgresql stop
sudo /etc/init.d/postgresql start

تحقق جدار الحماية الخاص بك. عند تعطيلها، يمكنك الاتصال. إذا كنت تريد / لا يمكن تعطيل جدار الحماية، أضف قاعدة لاتصالك عن بعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top