اذهب إلى المحتوى

تثبيت Postgres والتعرف على أساسيات إدارتها لقواعد البيانات


Mostafa Ata العايش

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

تثبيت Postgres

سنذكر في هذه الفقرة الخطوات الأساسية لتثبيت Postgres على أنظمة التشغيل المختلفة.

التثبيت على لينكس

تختلف طريقة التثبيت حسب نوع التوزيعة، ولذلك سنذكر طريق التثبيت في التوزيعات الرئيسية.

التثبيت باستخدام أداة yum (فيدورا، ريد هات، سنتوس، لينكس العلمي …)

يشرح المثال التالي كيفية تثبيت PostgreSQL 12 على نظام CentOS 7.6 x64:

  • توجه إلى PostgresSQL Yum Repository واختر إصدار PostgreSQL الذي تريد تثبيته ومن ثم حدد نظام التشغيل الخاص بك وإصداره والمعمارية، في هذا الدليل قمنا باستخدام نظام centos/redhat الإصدار 7، والمعمارية x86_64.
  • نزّل حزمة RPM للمنصة الخاصة بك من الموقع أو نفّذ الأمر التالي من الطرفية Terminal:
curl -O https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
  • ثبّت الحزمة كما يلي:
rpm -ivh pgdg-redhat-repo-latest.noarch.rpm

ملاحظة: قد تحتاج إلى استخدام sudo لتنفيذ الأمر السابق.

  • ابحث سريعًا لعرض الحزم المتاحة لـ postgres باستخدام الأمر التالي:
yum list postgres*

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

  • ثبّت الحزمة التي تختارها بشكل مشابه للأمر التالي:
sudo yum install postgresql12 postgresql12-devel postgresql12-libs postgresql12-server postgresql12-contrib

ثبَّتنا في الأمر السابق عدة حزم مرتبطة بالإصدار 12، ففيها كلا برنامجي الخادم والعميل، وكذلك المكاتب والملفات الرأسية headers، وكذلك المكاتب والإضافات للمساهمين في هذا المشروع مفتوح المصدر، إذ فضّلنا تثبيتها جميعًا كي تتمكن لاحقًا من استخدام أي منها.

نصيحة: في حال ظهور خطأ ما أثناء التثبيت فلا تيأس، ابحث عن الخطأ الذي قد يظهر لك ولا شك أنك ستجد إجابة لسؤالك.

الأنظمة التي تستخدم apt (أوبنتو، ديبيان، مينت…)

يمكنك تطبيق الأمر التالي باستخدام apt-get:

sudo apt-get install postgresql

في نظام Arch Linux

نستخدم الأمر pacman كما يلي:

sudo pacman -S postgresql

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

التثبيت على نظام ويندوز

يمكنك استخدام أداة التثبيت لنظام ويندوز (ستحتاج إلى VPN إذا كنت في سوريا أو السودان، كالعادة)، وبعد أن تحمّل أداة التثبيت اتبع خطوات التثبيت المعروفة.

التثبيت على نظام ماك

يمكنك تحميل أداة التثبيت لنظام ماك من هذا الرابط. واتباع خطوات التثبيت المعروفة كذلك.

أساسيات إدارة قواعد بيانات Postgres

بعد تثبيت Postgres، سنبدأ العمل عليها مباشرةً وإنشاء أول قاعدة بيانات لنا بوساطتها، فهل أنت مستعد؟ لننطلق!

إنشاء عنقود جديد لقواعد بيانات Postgres

بعد أن ثبَّت خادم قواعد بيانات Postgres على جهازك، يمكننا الآن البدء باستخدامه، ولكن يجب إنشاء ما يُسمّى بعنقود قواعد البيانات (Database Cluster) أولًا.

عنقود قواعد البيانات هو مجموعة من قواعد البيانات المُدارة عبر خادوم واحد، ولإنشائه علينا إنشاء المسارات التي ستُخزّن فيها بيانات قاعدة البيانات، كما علينا توليد جداول الإعدادات المشتركة وإنشاء قاعدتي البيانات template1 و postgres، يتم ذلك بشكل تلقائي كما سنرى بعد قليل، فلا تقلق.

قاعدة البيانات template1 تُمثّل قالبًا يتم استخدامه عند إنشاء أي قاعدة بيانات جديدة، أما قاعدة البيانات postgres` فهي قاعدة بيانات افتراضية مصممة ليتم استخدامها من المستخدمين والأدوات والتطبيقات الأخرى.

أولًا نقوم بإنشاء عنقود قاعدة بيانات باستخدام التوجيه initdb ضمن صدفة bash كما يلي:

sudo /usr/pgsql-12/bin/postgresql-12-setup initdb

ملحوظة: قمنا بكتابة المسار الكامل لبرمجية الإعداد والتهيئة (postgres-setup ) الخاصة بقواعد بيانات Postgres، ففي حال لم يتم العثور عليها في جهازك، فتأكد من أنك قمت بتثبيتها بطريقة صحيحة، ثم تأكد من أن مسار التثبيت الخاص بها.

يُظهر تنفيذ الأمر السابق المخرجات التالية:

Initializing database ... OK

ثم يمكنك بدء وتفعيل PostgreSQL باستخدام الأمرين التاليين:

sudo systemctl start postgresql-12
sudo systemctl enable postgresql-12

سنحصل من الأمر السابق على المخرجات التالية:

Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-12.service to /usr/lib/systemd/system/postgresql-12.service.

والآن أصبح خادم قاعدة بيانات PostgreSQL مفعّلًا ويمكننا استخدامه.

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

بعد أن قُمنا بتثبيت قواعد بيانات Postgres وإنشاء عنقود قواعد البيانات، ستكون الخطوة القادمة هي إضافة وإدارة صلاحيات مستخدمي قواعد البيانات المخزنة، حيث يمكن إنشاء مستخدمين والسماح لهم باستخدام قاعدة بيانات محددة دون الأخرى، أو السماح لهم بتنفيذ أوامر معيّنة، ومنعهم من تنفيذ غيرها.

للدخول إلى الصَّدَفَة (shell) الرئيسية الخاصة بPostgres نشغّل برنامج الصدفة بالأمر psql، ولكن علينا أولا الانتقال من حساب المستخدم العادي إلى الحساب postgres وذلك عن طريق الأمر التالي:

sudo -i -u postgres

لتتأكد من المستخدم الذي تعمل عليه، استخدم الأمر whoami وقد تظهر لك مخرجات مشابهة لما يلي:

[mostafa@hsoub ~]$ whoami
mostafa

وعندما تُبدّل المستخدم نعود وننفّذ الأمر whoami مرة أخرى كما يلي:

[mayesh@hsoub ~]$ sudo -i -u postgres
[sudo] password for mostafa:

-bash-4.2$ whoami
postgres

يمكنك الآن الدخول إلى قاعدة البيانات بتنفيذ الأمر psql للبدء بالعمل، ثم سنقوم بإنشاء حساب مستخدم لك، باستخدام الأمر التالي:

CREATE USER mostafa WITH PASSWORD 'password';

أُنشئ الآن حساب جديد باسم mostafa وبكلمة مرور password، والخطوة التالية هي إنشاء قاعدة بيانات ومنح المستخدم mostafa صلاحية الوصول لها.

CREATE DATABASE hsoubguide;

أُنشئت الآن قاعدة بيانات اسمها hsoubguide، وسنقوم الآن بمنح الوصول إليها للمستخدم mostafa بالأمر التالي:

GRANT ALL PRIVILEGES ON DATABASE hsoubguide TO mostafa;

مُنح الآن المستخدم mostafa كل الصلاحيات في قاعدة البيانات، حيث أن هنالك عدة أنواع مختلفة من الصلاحيات:

SELECT, INSERT, UPDATE, DELETE, RULE, REFERENCES, TRIGGER, CREATE, TEMPORARY, EXECUTE, USAGE.

أما إذا أردنا منح واحدة منها فقط، فيمكننا تنفيذ الأمر التالي:

GRANT SELECT ON DATABASE hsoubguide TO mostafa;

تسمح GRANT SELECT في هذا الأمر للمستخدم mostafa باستخدام استعلامات SELECT فقط في قاعدة البيانات hsoubguide.

مثال عن قاعدة بيانات

قد يكون اهتمام بعض قرّاء هذا الدليل في Postgres منصبًّا على الاستعلامات أكثر من اهتمامهم بتصميم الجداول الخاصة بهم، ولذلك فقد قدّمنا مثالًا عن قاعدة بيانات جاهزة يمكنك تحميلها، لتتمكن من المتابعة مع هذا الدليل دون الحاجة إلى إنشاء الجداول الخاصة بك وإدراج البيانات الواردة ضمنها.

التثبيت المحلي

سيتعيّن عليك أوّلًا تنزيل البيانات، ثم تحميلها في قاعدة البيانات.

ملاحظة: تُنفّذ التعليمات التالية في صَدَفة bash المُعتادة، وليس ضمن psql.

curl -L -O http://cl.ly/173L141n3402/download/example.dump
createdb hsoubguide
pg_restore --no-owner --dbname hsoubguide example.dump

سنتحدث عن الأمر pg_restore في فقرة لاحقة، وهو مسؤول عن استرجاع قاعدة بيانات من ملف، أما الأمر createdb فهو يُنشئ قاعدة بيانات في Postgres اسمها hsoubguide.

الاتصال بقاعدة البيانات

بعد أن أنشأت قاعدة البيانات الخاصة بك hsoubguide فعليك الآن الدخول إلى psql والاتصال بقاعدة البيانات هذه، ويمكنك القيام بذلك بطريقتين:

  • تحديد قاعدة البيانات عن عن طريق التوجيه dbname كما يلي:
psql --dbname hsoubguide
  • تحديد قاعدة البيانات من داخل صَدفة psql باستخدام الأمر ‎\c كما يلي:
postgres=# \c hsoubguide
You are now connected to database "hsoubguide" as user "postgres".

الخلاصة

ثبَّتنا في هذا الفصل Postgres، وتعرفنا على كيفية الدخول إلى صدفة psql ثم أنشأنا قاعدة بيانات بدائية، وتعرفنا على كيفية تحديد صلاحية المستخدمين، وسنتعرف في الفصل التالي على بعض الأوامر التي يمكننا تنفيذها داخل صدفةpsql.

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

بتاريخ On 9/28/2020 at 13:40 قال محمد البيطار2:

عندك علم شو حل هالمشكلة عند التنصيب؟

no mapping between account names and security ids carried out

مع العلم اني عملت فورمات للجهاز وبرضو المشكلة ما انحلت

هل يمكنك التفصيل أكثر أين ظهرت المشكلة؟ وما الخطوة التي كنت تقوم بها عندها؟
هل يمكنك أيضًا الاطلاع على الرابط التالي من فضلك
https://www.rebeladmin.com/2016/01/how-to-fix-error-no-mapping-between-account-names-and-security-ids-in-active-directory/

رابط هذا التعليق
شارك على الشبكات الإجتماعية

لم يعد الرابط صالحاً

curl -L -O http://cl.ly/173L141n3402/download/example.dump

الملف الذي ينزل

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>893GW37KEG1RBF8T</RequestId>
<HostId>TrznPsuSYYhU9rubUjQ8/AJrsjJ5U7TG4SPRBAubbjlPTepgs/I3LMrEUTTDnsPt7TCEqFzCaDbwqp5+3xxv4w==</HostId>
</Error>

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

بتاريخ 12 ساعة قال اسماعيل Ismail:

 

 

 

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>893GW37KEG1RBF8T</RequestId>
<HostId>TrznPsuSYYhU9rubUjQ8/AJrsjJ5U7TG4SPRBAubbjlPTepgs/I3LMrEUTTDnsPt7TCEqFzCaDbwqp5+3xxv4w==</HostId>
</Error>
 

 

بالفعل الدومين الخاص بالملف لم يعد موجود، حاول استخدام الرابط التالي:

curl -L -O https://academy.hsoub.com/applications/core/interface/file/attachment.php?id=136790&key=fe6f1bbb0e480b944b7ed7dc73493578

لاحظ أن الملف بصيغة .sql لذلك عليك تعديل الأمر ليصبح:

pg_restore --no-owner --dbname hsoubguide example.sql

example.sql

رابط هذا التعليق
شارك على الشبكات الإجتماعية



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...