العربية

تثبيت phpMyAdmin وتأمينه على VPS لينكس

2 min
استضافة VPS/VDS

يُعد phpMyAdmin واجهة ويب عملية لإدارة MariaDB وMySQL، وهو أيضًا من أكثر العناوين فحصًا على الإنترنت. يعرض هذا الدليل طريقتين للتثبيت على VPS Linux Infrawire الخاص بك: حزمة apt مع Apache، وتثبيتًا يدويًا خلف Nginx، ثم الإجراءات التي تبقيه بعيدًا عن الروبوتات.

📋 المتطلبات المسبقة

  • خادم VPS بنظام Ubuntu 24.04 أو Debian 12 مع صلاحيات root أو sudo (عنوان IP وكلمة مرور root متوفران في مساحة العميل)
  • حزمة LAMP (الخيار A) أو LEMP (الخيار B) تعمل مع MariaDB
  • عنوان IP العام الخاص بك، ويُشار إليه أدناه بـ ADMIN_IP

1. الخيار A: تثبيت حزمة apt مع Apache

Bash
apt update apt install -y phpmyadmin php-mbstring php-zip php-gd php-curl

في المثبّت، حدّد apache2 بمفتاح المسافة (يجب أن تظهر نجمة)، ثم أجب بـ «نعم» لضبط قاعدة البيانات عبر dbconfig-common وعيّن كلمة مرور للحساب الداخلي لـ phpMyAdmin. بعد ذلك أعد تحميل Apache:

Bash
phpenmod mbstring systemctl reload apache2

أصبح phpMyAdmin متاحًا الآن على http://VPS_IP/phpmyadmin.

2. إنشاء مستخدم مخصص لقاعدة البيانات

لا تسجّل الدخول أبدًا بالمستخدم root. في MariaDB على Ubuntu وDebian يستخدم root مصادقة unix_socket وسيرفضه phpMyAdmin على أي حال: اترك الأمر كما هو وأنشئ حسابًا عاديًا.

Bash
mariadb
SQL
CREATE USER 'pmauser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD'; GRANT ALL PRIVILEGES ON appdb.* TO 'pmauser'@'localhost'; FLUSH PRIVILEGES; EXIT;

امنح الصلاحيات فقط على قواعد البيانات التي يديرها المستخدم فعلًا. لا تفعّل AllowNoPassword في الإعدادات.

3. إخفاء العنوان وإضافة المصادقة (Apache)

استبدل الاسم المستعار الافتراضي باسم عشوائي، وأنشئ ملف كلمات المرور:

Bash
SUFFIX=$(openssl rand -hex 6); echo "pma-$SUFFIX" sed -i "s#Alias /phpmyadmin#Alias /pma-$SUFFIX#" /etc/phpmyadmin/apache.conf htpasswd -c /etc/phpmyadmin/.htpasswd USER

ثم أضف هذه الأسطر داخل الكتلة الموجودة <Directory /usr/share/phpmyadmin> في الملف /etc/phpmyadmin/apache.conf:

Apache
1AuthType Basic 2AuthName 'Restricted area' 3AuthUserFile /etc/phpmyadmin/.htpasswd 4<RequireAll> 5 Require valid-user 6 Require ip ADMIN_IP 7</RequireAll>

بدون <RequireAll> كان Apache سيقبل أحد الشرطين فقط؛ أما معها فيلزم توفر كلمة المرور وعنوان IP معًا.

Bash
apache2ctl configtest && systemctl reload apache2

4. الخيار B: تثبيت يدوي خلف Nginx

ثبّت الاعتماديات، ثم نزّل أحدث إصدار من الموقع الرسمي لـ phpMyAdmin (استبدل VERSION برقم الإصدار الحالي):

Bash
apt install -y nginx php-fpm php-mysql php-mbstring php-xml php-zip php-gd php-curl apache2-utils cd /tmp wget https://files.phpmyadmin.net/phpMyAdmin/VERSION/phpMyAdmin-VERSION-all-languages.tar.gz tar xzf phpMyAdmin-VERSION-all-languages.tar.gz mkdir -p /var/www/pma mv phpMyAdmin-VERSION-all-languages /var/www/pma/pma-SECRET cd /var/www/pma/pma-SECRET cp config.sample.inc.php config.inc.php openssl rand -hex 16

استبدل pma-SECRET باسم عشوائي. عدّل config.inc.php والصق القيمة المولّدة (32 حرفًا) كسرّ:

PHP
$cfg['blowfish_secret'] = 'RANDOM_32_CHARS'; $cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
Bash
mkdir -p /var/lib/phpmyadmin/tmp chown www-data:www-data /var/lib/phpmyadmin/tmp chmod 700 /var/lib/phpmyadmin/tmp chown -R root:www-data /var/www/pma chmod 640 /var/www/pma/pma-SECRET/config.inc.php htpasswd -c /etc/nginx/.htpasswd USER

أضف هذه الكتلة داخل server { ... } الخاص بموقعك. في Debian 12 يكون المقبس php8.2-fpm.sock بدلًا من php8.3-fpm.sock:

Nginx
1location ^~ /pma-SECRET/ { 2 allow ADMIN_IP; 3 deny all; 4 auth_basic 'Restricted area'; 5 auth_basic_user_file /etc/nginx/.htpasswd; 6 root /var/www/pma; 7 index index.php; 8 9 location ~ \.php$ { 10 include snippets/fastcgi-php.conf; 11 fastcgi_pass unix:/run/php/php8.3-fpm.sock; 12 } 13}
Bash
nginx -t && systemctl reload nginx

5. الخيار الأكثر أمانًا: نفق SSH

إن لم ترغب في أي تعرّض عام، فاجعل الواجهة متاحة من الـ VPS نفسه فقط وافتح نفقًا من حاسوبك:

Bash
ssh -L 8080:127.0.0.1:80 USER@VPS_IP

ما دامت الجلسة مفتوحة، تصفّح http://127.0.0.1:8080/pma-SECRET/. في Apache استبدل في الكتلة Require ip ADMIN_IP بالسطر Require local، وفي Nginx استخدم allow 127.0.0.1;. وهذا يحل أيضًا مشكلة تغيّر عنوان IP المنزلي.

6. التحقق من الحماية

Bash
curl -sI http://VPS_IP/phpmyadmin | head -n 1 curl -sI http://VPS_IP/pma-SECRET/ | head -n 1

يجب أن يُرجع الطلب الأول 404. أما الثاني فيُرجع 403 من أي عنوان IP غير ADMIN_IP، ويُرجع 401 من عنوانك إلى أن تُدخل كلمة مرور المصادقة الأساسية. قدّم phpMyAdmin عبر HTTPS فقط، وإلا انتقلت كلمات المرور كنص صريح.

🛠️ استكشاف الأخطاء وإصلاحها

404 Not Found. الاسم المستعار أو اسم location لا يطابق العنوان الذي كتبته، أو لم تتم إعادة تحميل خادم الويب.

تحصل أنت على 403 Forbidden. تغيّر عنوان IP العام الخاص بك. حدّث ADMIN_IP أو انتقل إلى نفق SSH.

«The mbstring extension is missing» أو صفحة فارغة. ثبّت php-mbstring ثم نفّذ phpenmod mbstring (Apache) أو أعد تشغيل php8.3-fpm (Nginx).

Access denied للمستخدم root. هذا متوقع ومرغوب. سجّل الدخول بالمستخدم المخصص الذي أنشأته في الخطوة 2.


🎉 تم تثبيت phpMyAdmin وإخفاؤه وتقييده: أنت وحدك من يصل إلى قواعد بياناتك.

ابقَ على اطلاع بأحدث العروض والخصومات والعروض الترويجية الخاصة.

عرض العروض الترويجية

نستخدم ملفات تعريف الارتباط

نستخدم كوكيز تحليلية لتحسين تجربتك. لا نبيع البيانات لأطراف ثالثة. المزيد في سياسة الخصوصية.