Postgresql الاتصال بقاعدة بيانات بعيدة. اتصال قاعدة بيانات PostgreSQL. تغيير أدوار المستخدم

09.11.2020
إدارة النظام

هذا المنشور هو دليل سريع للمبتدئين الذين قاموا بتثبيت PostgreSQL لأول مرة. إليك جميع المعلومات التي تحتاجها لبدء استخدام PostgreSQL.

الاتصال بنظام إدارة قواعد البيانات

أول شيء يجب فعله هو الوصول إلى PostgreSQL ، الوصول كمستخدم خارق.
توجد إعدادات المصادقة في ملف pg_hba.conf.
  1. المحلية جميع الأقران postgres
يشير هذا السطر إلى أن مستخدم postgres يمكنه الاتصال بأي قاعدة بيانات PostgreSQL محلية عبر مقبس. لا تحتاج إلى إدخال كلمة مرور ، فسيقوم نظام التشغيل بإرسال اسم المستخدم ، وسيتم استخدامه للمصادقة.
نحن نتواصل:
  1. $ sudo -u postgres psql postgres postgres
لتتمكن من الاتصال عبر الشبكة ، أضف الخط إلى pg_hdba.conf:
  1. # نوع قاعدة البيانات طريقة عنوان المستخدم
  2. hostssl كافة 0.0.0.0/0 md5
طريقة المصادقة ام دي 5يعني أنه يجب عليك إدخال كلمة مرور للاتصال. هذا ليس مفيدًا جدًا إذا كنت تستخدم وحدة تحكم psql كثيرًا. إذا كنت تريد أتمتة شيء ما ، فالأخبار السيئة هي أن psql لا تقبل كلمة المرور كوسيطة. هناك طريقتان لحل هذه المشاكل: تعيين متغير بيئة مناسب وتخزين كلمة المرور في ملف خاص .pgpass.

إعداد متغير البيئة PGPASSWORD

يجب أن أقول على الفور أنه من الأفضل عدم استخدام هذه الطريقة ، لأن البعض نظام التشغيلتسمح لك بمشاهدة مستخدمين عاديينمتغيرات البيئة مع ملاحظة. ولكن إذا كنت تريد ، فأنت بحاجة إلى الكتابة في المحطة:
  1. تصدير PGPASSWORD = mypasswd
المتغير سيكون متاحا في الدورة الحالية. إذا كنت بحاجة إلى تعيين متغير لجميع الجلسات ، فأنت بحاجة إلى إضافة السطر من المثال إلى ملف .bashrc أو .bash_profile

تخزين كلمة المرور في ملف .pgpass

إذا كنا نتحدث عن Linux ، فيجب أن يكون الملف موجودًا في $ HOME (/ home / username). يجب أن يمتلك المالك (0600) فقط أذونات الكتابة والقراءة. تحتاج إلى كتابة سطور من النموذج إلى الملف:
  1. اسم المضيف: المنفذ: قاعدة البيانات: اسم المستخدم: كلمة المرور
في الحقول الأربعة الأولى ، يمكنك كتابة "*" ، مما يعني عدم وجود تصفية (التحديد الكامل).

الحصول على معلومات المساعدة

\؟ - سيعطي جميع الأوامر المتاحة مع وصفها المختصر ،
\ ح - سيتم سرد جميع الطلبات المتاحة ،
\ h إنشاء - سيتم عرض التعليمات لطلب معين.

إدارة مستخدم DBMS

كيف أحصل على قائمة بمستخدمي PostgreSQL؟ أو يمكنك الاستعلام عن جدول pg_user.
  1. حدد * من pg_user ؛

إنشاء مستخدم PostgreSQL جديد

من قذيفة psql ، يمكنك القيام بذلك باستخدام الأمر CREATE.
  1. إنشاء اسم مستخدم للمستخدم بكلمة مرور "كلمة مرور" ؛
أو يمكنك استخدام المحطة.
  1. createuser -S -D -R -P اسم المستخدم
ستتم مطالبتك بكلمة مرور.

تغيير كلمة مرور المستخدم

  1. تبديل اسم المستخدم بكلمة المرور "كلمة المرور" ؛

تغيير أدوار المستخدم

لتمكين المستخدم من إنشاء قواعد بيانات ، قم بتشغيل الاستعلام:
  1. تغيير اسم المستخدم الدور مع CREATEDB ؛

إدارة قاعدة البيانات

سرد قواعد البيانات في psql terminal: نفس الشيء من Linux Terminal:
  1. psql -l
إنشاء قاعدة بيانات من psql (PostgreSQL Terminal)
  1. إنشاء قاعدة بيانات dbname OWNER dbadmin ؛
إنشاء قاعدة بيانات جديدة باستخدام المحطة:
  1. createdb -O username dbname؛

إعداد حقوق الوصول إلى قاعدة البيانات

إذا كان المستخدم هو مالك (مالك) قاعدة البيانات ، فإنه يمتلك جميع الحقوق. ولكن إذا كنت تريد منح حق الوصول إلى مستخدم آخر ، فيمكنك القيام بذلك باستخدام الأمر GRANT. سيسمح الاستعلام أدناه للمستخدم بالاتصال بقاعدة البيانات. لكن لا تنسَ ملف التكوين pg_hba.conf ، يجب أن يحتوي أيضًا على أذونات الاتصال المناسبة.
  1. منح الاتصال في قاعدة البيانات dbname إلى dbadmin ؛

0

أنا محتار. لدينا قاعدة بيانات postgres 9.2 التي نستخدمها منذ بعض الوقت. نحن الآن بحاجة إلى أن نكون قادرين على الاتصال به من خارج شبكتنا.

لذلك ، قمنا بإعداد عنوان IP الخارجي واختبار أنه يمكننا الاتصال بالمنفذ 5432 من المضيف البعيد عبر telnet. وهكذا ، فإنه يثبت ذلك إتصال شبكةيعمل ، وجدران الحماية ، وما إلى ذلك. كل شيء على ما يرام.

عندما أحاول الاتصال بـ:
PSQL -h db.host.com -d dbname -p 5432 -U المستخدم

أعود Psql: أغلق الخادم الاتصال بشكل غير متوقع.

لقد تحققت من ذلك
تم تعيين listen_addresses = "*" في postgresql.conf

وفي pg_hba.conf لدينا سطر يقرأ (للاختبار فقط)
إتقان جميع 0.0.0.0/0 md5

وأعدت تحميل قاعدة البيانات للتحقق من التغييرات المحددة.
لذلك يجب أن يسمح هذا بالاتصالات من أي مصدر.

إصدار psql على خادم قاعدة البيانات هو 9.2.14 وعلى العميل 9.2.13.

أي اقتراحات أو أفكار؟

  • إجابة واحدة
  • فرز:

    نشاط

1

أرغب في تجربة بعض الأشياء للحصول على مزيد من المعلومات:

    ذيل Postgres لتسجيل الدخول إلى الخادم لمعرفة ما يحدث هناك عند الاتصال.

    قم بتشغيل psql --version للتأكد من أنه يتطابق أكثر أو أقل مع إصدار الخادم. (أرى أنك قمت بذلك بالفعل ، لكنني سأتركه هنا للأجيال القادمة).

    تشغيل strace psql .... لمعرفة مدى الفشل.

لا يزال هذا يبدو وكأنه مشكلة شبكة بالنسبة لي. ما هو أمر telnet الذي تعمل معه؟ يبدو "عنوان IP الخارجي" مثلك تمامًا على AWS. التخصيص الوصول عن بعدإلى VPC يأخذ العديد من الخطوات. هل لديكم أي خدمات أخرى مفتوحة للخارج بهذا العمل؟

يمكنك أيضًا استكشاف الأخطاء وإصلاحها عن طريق إيقاف تشغيل خادم Postgres واستخدام nc للاستماع على 5432. ثم اتصل بـ telnet ومعرفة ما إذا كان يمكنك إرسال البيانات ذهابًا وإيابًا.

1

بول ، شكرا على الاقتراحات. قمت بتمديد وفحص الإصدارات. وكنت محقًا في محاولتك الاتصال من AWS. اتضح أن هذه كانت الطبقة التي استخدمتها في موازن التحميل للسماح فقط بالوصول إلى نطاقات IP-2 IP التي تنشرها AWS. عندما قمت بتعطيل irule ، كان بإمكاني الاتصال على الفور. لذلك يجب أن يكون هذا منطقًا سرياليًا لأنني تحققت من عنوان IP العام لمثيل EC2 الخاص بي وتم إدراجه بالفعل في irule عبر إشعار CIDR. -

انتباه : إذا كنت تعمل في نظام Windows ولم تقم بعد بتثبيت PostgreSQL و Debet Plus V12 ، فيمكنك تنزيل مجموعة Debit Plus V12 باستخدام PostgreSQL DBMS وقاعدة بيانات متصلة (مع تكوين أساسي لأوكرانيا) من صفحة التنزيل. بخلاف ذلك ، تحتاج أولاً إلى تثبيت PostgreSQL DBMS وحزمة برنامج Debet Plus V12 ، وبعد ذلك يمكنك تكوين الاتصال واستيراد قاعدة بيانات PostgreSQL باتباع هذه التعليمات.

لتوصيل قاعدة بيانات PostgreSQL ، عليك القيام بما يلي:

    شغّل "Debit Plus V12" وأضف قاعدة جديدة ( قائمة السياق"اضف جديد").

    اترك مربع الاختيار "إضافة موجود إلى القائمة".

"نظم إدارة قواعد البيانات" - POSTGRE.

"خادم قاعدة البيانات" - المضيف المحلي.

"اسم قاعدة البيانات" - حدد اسم قاعدة البيانات من PostgreSQL DBMS بأحرف لاتينية صغيرة (بأحرف صغيرة).

ملحوظة: عادة ما يتم استخدام قاعدة واحدة. لأغراض خاصة ، يمكن تقسيم قاعدة البيانات إلى عدة قواعد بيانات ، ثم تحتاج إلى تحديد المربع بجوار "استخدام قواعد بيانات متعددة" ، والنقر فوق الزر "التالي" والإشارة إلى تطابق "العلامات" مع قواعد البيانات المادية. قد يكون هذا ضروريًا ، على سبيل المثال ، إذا كانت قواعد البيانات الخاصة بالعديد من المؤسسات تشير إلى نفس الدلائل (الأطراف المقابلة ، العناصر ، إلخ). لم يتم مناقشة هذه القضية أكثر.

"دليل الإعدادات" - حدد المسار إلى الإعدادات الأساسية لـ PostgreSQL (drive \ DebetPlusV12 \ base \ pgdpbase).

احفظ التغييرات بالنقر فوق "إنهاء".

    ابدأ pgAdmin (مسؤول PostgreSQL DBMS) ، وأضف خادمًا (ملف / إضافة خادم ...) وأضف قاعدة بيانات جديدة (قائمة قاعدة بيانات جديدة ...).

أدخل اسم الخادم ، المضيف المحلي في حقل المضيف ، واملأ باقي الحقول كما تريد.

أدخل اسم قاعدة البيانات في حقل "الاسم" (نفس الاسم الذي تم إدخاله في حقل "الخادم" في إعدادات الاتصال بقاعدة البيانات "Debet Plus V12").

    لاستيراد قاعدة البيانات من الأرشيف ، استخدم "استعادة ..."

حدد المسار إلى أرشيف قاعدة بيانات dpbase.bakup (محرك الأقراص \ DebetPlusV12 \ base \ pgdpbase).

    يمكنك إضافة مستخدم dpadmin ، وهو المسؤول ، إلى Debit Plus V12 افتراضيًا (بدون كلمة مرور).

تعيين جميع الحقوق لهذا المستخدم.

ملحوظة : لا يمكنك إضافة مستخدم dpadmin ، فعند تنشيط قاعدة البيانات ، ستحتاج إلى إدخال اسم مسؤول postgres.

قم بتحديث قائمة القواعد (القائمة "تحديث").

ملحوظة : إذا كنت لا تريد تعيين حقوق "المستخدم المتميز" للمستخدم ، فقم بتعيين حقوق "الجداول" و "طرق العرض". للقيام بذلك ، حدد الكائن المناسب وحدد عنصر قائمة سياق معالج المنحة.

في علامة التبويب "التحديد" ، انقر فوق الزر "تحديد الكل" ، وفي علامة التبويب "الامتيازات" ، حدد مربع الاختيار "الكل" وانقر فوق الزر "إضافة / تغيير". احفظ التغييرات.

    قم بتنشيط إعداد الاتصال بقاعدة البيانات في برنامج Debet Plus V12 (قائمة السياق "تنشيط").

سيطلب النظام كلمة مرور للاتصال بقاعدة البيانات. انقر فوق "نعم".

انتباه! إذا لم تظهر مثل هذه الرسالة ، فابدأ في تحديث هياكل قاعدة البيانات عن طريق تحديد عنصر القائمة "الخدمة" / "تحديث هياكل قاعدة البيانات".

نتيجة لذلك ، ستظهر النافذة التالية:

اترك جميع مربعات الاختيار بشكل افتراضي (يجب أن تكون هناك مربعات اختيار في عمود "إعادة الفهرسة" لجميع جداول قاعدة البيانات).

بعد الانتهاء من التعديل يمكنك البدء في العمل.

    إطلاق "Debit Plus V12" وإضافة قاعدة جديدة (قائمة السياق "إضافة جديد").

    اترك مربع الاختيار "إضافة موجود إلى القائمة":

في الحقل الأول ، حدد اسمًا عشوائيًا لقاعدة البيانات (قد يختلف الاسم على كل كمبيوتر يعمل).

"نظم إدارة قواعد البيانات" - POSTGRE.

خادم قاعدة البيانات هو اسم الخادم أو عنوان IP الخاص به.

منفذ خادم قاعدة البيانات - حدد منفذ خادم قاعدة البيانات ، افتراضيًا 5432.

"اسم قاعدة البيانات" - حدد اسم قاعدة البيانات بأحرف لاتينية صغيرة.

"اسم مخطط قاعدة البيانات" هو dpbase.

ضع علامة في المربع "استخدام تفويض الخصم المباشر" فقط.

"دليل الإعدادات" - حدد المسار إلى الإعدادات الأساسية لـ PostgreSQL (مسار الشبكة \ DebetPlusV12 \ base \ pgdpbase).

احفظ التغييرات التي تم إجراؤها بالنقر فوق الزر "إنهاء" ، ثم قم بتنشيط القاعدة.

    تعيين معلمات التشغيل (القائمة الرئيسية "الإعدادات" / "معلمات التشغيل")

في النافذة التي تظهر ، في حقل "كلمة المرور لتغيير الإعدادات" ، أدخل كلمة المرور 150301 وانقر فوق الزر "قبول".

حدد المسار لمجلد JDebet على الخادم وانقر فوق حفظ. اجعل القاعدة نشطة ويمكنك البدء في العمل.

PostgreSQL هو نظام إدارة قواعد بيانات كائنية علائقية عبر الأنظمة الأساسية مفتوح مصدر الرمز... ستوضح لك هذه المقالة كيفية تثبيت PostgreSQL في أوبونتو لينكس، قم بالاتصال به وقم بتشغيل اثنين من استعلامات SQL البسيطة وكيفية إعداد نسخة احتياطية.

لتثبيت PostgreSQL 9.2 على Ubuntu 12.10 ، قم بتشغيل الأوامر التالية:

sudo apt-add-repository ppa: pitti / postgresql
sudo apt-get update
sudo apt-get install postgresql-9.2

دعنا نحاول العمل مع DBMS من خلال shell:

sudo -u postgres psql

لنقم بإنشاء قاعدة بيانات اختبار ومستخدم اختبار:

إنشاء قاعدة بيانات test_database ؛
إنشاء مستخدم test_user بكلمة مرور "qwerty" ؛
منح الكل في قاعدة البيانات test_database TO test_user ؛

للخروج من shell ، أدخل الأمر \ q.

لنحاول الآن العمل مع قاعدة البيانات التي تم إنشاؤها نيابة عن test_user:

psql -h localhost test_database test_user

لنقم بإنشاء جدول جديد:

إنشاء تسلسل user_ids ؛
إنشاء مستخدمي الجدول (
معرف INTEGER PRIMARY KEY الافتراضي NEXTVAL ("user_ids") ،
تسجيل الدخول CHAR (64) ،
كلمة المرور CHAR (64)) ؛

لاحظ أنه ، على عكس بعض نظم إدارة قواعد البيانات الأخرى ، لا تحتوي PostgreSQL على أعمدة زيادة تلقائية. بدلا من ذلك ، يتم استخدام التسلسلات في postgres. في الوقت الحالي ، يكفي معرفة أنه باستخدام دالة nextval ، يمكننا الحصول على أرقام فريدة لتسلسل معين:

حدد NEXTVAL ("user_ids") ؛

عن طريق تعيين القيمة الافتراضية لحقل معرف لجدول المستخدمين القيمة NEXTVAL ("user_ids")، لقد حققنا نفس تأثير auto_increment. عند إضافة سجلات جديدة إلى الجدول ، يمكننا حذف المعرف ، لأنه سيتم إنشاء معرف فريد تلقائيًا. يمكن أن تستخدم عدة جداول نفس التسلسل. وبالتالي ، يمكننا التأكد من عدم تداخل قيم بعض الحقول في هذه الجداول. بهذا المعنى ، تكون التسلسلات أكثر مرونة من التزايد التلقائي.

يمكن إنشاء نفس الجدول بالضبط بأمر واحد فقط:

إنشاء مستخدمي الجدول 2 (
معرف المفتاح الأساسي التسلسلي ،
تسجيل الدخول CHAR (64) ،
كلمة المرور CHAR (64)) ؛

في هذه الحالة ، يتم إنشاء تسلسل حقل المعرف تلقائيًا.

الآن باستخدام الأمر \ d ، يمكنك رؤية قائمة بجميع الجداول المتاحة ، وبمساعدة \ d المستخدمين ، يمكنك رؤية وصف مستخدمي الجدول. إذا لم تحصل على المعلومات التي تهتم بها ، فحاول \ d + بدلاً من \ d. يمكن الحصول على قائمة قواعد البيانات باستخدام الأمر \ l ، ويمكن الحصول على التبديل إلى قاعدة بيانات معينة باستخدام الأمر \ c dbname. للمساعدة في الأمر ، قل \؟ ...

من المهم ملاحظة أن PostgreSQL يحول أسماء الجداول والأعمدة إلى أحرف صغيرة افتراضيًا. إذا كان هذا السلوك غير مرغوب فيه ، فيمكنك استخدام علامات الاقتباس المزدوجة:

إنشاء جدول "anotherTable" ("بعض القيمة" VARCHAR (64)) ؛

هناك ميزة أخرى في PostgreSQL يصعب البدء بها وهي ما يسمى بـ "المخطط". المخطط عبارة عن مساحة اسم للجداول ، مثل كتالوج الجداول داخل قاعدة بيانات.

إنشاء مخطط:

إنشاء حجوزات المخطط ؛

التحول إلى الدائرة:

تعيين search_path TO الحجوزات ؛

يمكنك عرض قائمة المخططات الموجودة باستخدام الأمر \ dn. الافتراضي هو مخطط يسمى عام. من حيث المبدأ ، يمكنك استخدام PostgreSQL بنجاح دون معرفة وجود المخططات. ولكن عند العمل باستخدام التعليمات البرمجية القديمة ، وكذلك في بعض الحالات المتطورة ، يمكن أن تكون المعرفة حول المخططات مفيدة للغاية.

بخلاف ذلك ، لا يختلف العمل مع PostgreSQL كثيرًا عن العمل مع أي نظام DBMS علاقي آخر:

أدخل المستخدمين (تسجيل الدخول ، كلمة المرور)
القيم ("afiskon"، "123456") ؛
حدد * من المستخدمين ؛

إذا حاولت الاتصال بـ postgres من جهاز آخر الآن ، فستفشل:

psql -h 192.168.0.1 test_database test_user

Psql: تعذر الاتصال بالخادم: تم رفض الاتصال
هو الخادم الذي يعمل على المضيف "192.168.0.1" وقبول
اتصالات TCP / IP على المنفذ 5432؟

لإصلاح ذلك ، أضف السطر:

listen_addresses = "localhost ، 192.168.0.1"

... إلى الملف /etc/postgresql/9.2/main/postgresql.conf أيضًا.

تم التعرف على ثغرة أمنية (CVE-2019-18634) في الأداة المساعدة sudo ، والتي تُستخدم لتنظيم تنفيذ الأوامر نيابة عن مستخدمين آخرين ، مما يسمح لك بزيادة امتيازاتك على النظام. مشكلة […]

يعمل إصدار WordPress 5.3 على تحسين وتوسيع محرر الكتلة المقدم في WordPress 5.0 مع كتلة جديدة وتفاعلات أكثر سهولة وإمكانية وصول محسّنة. الميزات الجديدة في المحرر [...]

بعد تسعة أشهر من التطوير ، أصبحت حزمة الوسائط المتعددة FFmpeg 4.2 متاحة ، والتي تتضمن مجموعة من التطبيقات ومجموعة من المكتبات للعمليات على تنسيقات الوسائط المتعددة (التسجيل والتحويل و [...]

  • الميزات الجديدة في لينكس النعناع١٩.٢ القرفة

    Linux Mint 19.2 هو إصدار دعم طويل الأجل سيتم دعمه حتى عام 2023. يأتي مع تحديث البرمجياتويحتوي على تحسينات والعديد من [...]

  • تم إصدار توزيع Linux Mint 19.2

    تم تقديم الإصدار توزيع لينكس Mint 19.2 ، التحديث الثاني لفرع Linux Mint 19.x ، استنادًا إلى Ubuntu 18.04 LTS ومدعوم حتى عام 2023. التوزيع متوافق تمامًا [...]

  • تتوفر إصدارات خدمة BIND الجديدة التي تتضمن إصلاحات الأخطاء وتحسينات الميزات. يمكن تنزيل الإصدارات الجديدة من صفحة التنزيلات على موقع المطور: [...]

    Exim هو وكيل نقل الرسائل (MTA) تم تطويره في جامعة كامبريدج لاستخدامه في أنظمة يونكسمتصل بالإنترنت. إنه متاح مجانًا وفقًا لـ [...]

    بعد ما يقرب من عامين من التطوير ، تم إصدار ZFS على Linux 0.8.0 ، قيد التنفيذ نظام الملفات ZFS ، مصمم كوحدة نمطية لنواة Linux. تم اختبار الوحدة باستخدام Linux kernels 2.6.32 لـ [...]

    أكملت فرقة عمل هندسة الإنترنت (IETF) ، التي تشارك في تطوير بروتوكولات الإنترنت والهندسة المعمارية ، تشكيل RFC لبروتوكول بيئة إدارة الشهادات التلقائية (ACME) [...]

    قام مركز إصدار الشهادات غير الربحي Let's Encrypt ، الذي يتحكم فيه المجتمع ويقدم شهادات مجانًا للجميع ، بتلخيص نتائج العام الماضي وتحدث عن خطط عام 2019. [...]