हिन्दी (Hindi)

Linux VPS पर phpMyAdmin इंस्टॉल और सुरक्षित करें

3 min
VPS/VDS होस्टिंग

phpMyAdmin, MariaDB और MySQL के लिए एक सुविधाजनक वेब इंटरफ़ेस है, और साथ ही इंटरनेट पर सबसे ज़्यादा स्कैन किए जाने वाले URL में से एक भी। यह गाइड आपके VPS Linux Infrawire पर दो इंस्टॉलेशन दिखाती है, Apache के साथ apt पैकेज और Nginx के पीछे मैन्युअल इंस्टॉल, और फिर वे उपाय जो इसे बॉट से दूर रखते हैं।

📋 पूर्वापेक्षाएँ

  • Ubuntu 24.04 या Debian 12 वाला VPS, root या sudo एक्सेस के साथ (IP और root पासवर्ड आपके क्लाइंट एरिया में मिलते हैं)
  • MariaDB के साथ चालू LAMP (विकल्प A) या LEMP (विकल्प B) स्टैक
  • आपका अपना सार्वजनिक IP, जिसे नीचे ADMIN_IP कहा गया है

1. विकल्प A: Apache के साथ apt पैकेज इंस्टॉल करें

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 से कभी लॉगिन न करें। Ubuntu और Debian पर MariaDB में 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. URL छिपाएँ और ऑथेंटिकेशन जोड़ें (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

फिर /etc/phpmyadmin/apache.conf में मौजूद <Directory /usr/share/phpmyadmin> ब्लॉक के अंदर ये पंक्तियाँ जोड़ें:

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.3-fpm.sock की जगह php8.2-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 लौटाना चाहिए। दूसरा ADMIN_IP के अलावा किसी भी IP से 403 लौटाता है, और आपके IP से तब तक 401 जब तक आप बेसिक ऑथ पासवर्ड नहीं देते। phpMyAdmin को केवल HTTPS पर ही चलाएँ, वरना पासवर्ड सादे टेक्स्ट में जाते हैं।

🛠️ समस्या निवारण

404 Not Found। एलियास या location का नाम आपके टाइप किए URL से मेल नहीं खाता, या वेब सर्वर रीलोड नहीं किया गया।

आपको ही 403 Forbidden मिल रहा है। आपका सार्वजनिक IP बदल गया है। ADMIN_IP अपडेट करें या SSH टनल पर जाएँ।

"The mbstring extension is missing" या खाली पेज। php-mbstring इंस्टॉल करें, फिर phpenmod mbstring (Apache) चलाएँ या php8.3-fpm रीस्टार्ट करें (Nginx)।

root के लिए Access denied। यह अपेक्षित और वांछित है। चरण 2 में बनाए गए समर्पित यूज़र से लॉगिन करें।


🎉 phpMyAdmin इंस्टॉल, छिपा हुआ और प्रतिबंधित है: आपके डेटाबेस तक केवल आप पहुँच सकते हैं।

नवीनतम ऑफ़र, छूट और विशेष प्रोमोशन से अपडेट रहें।

प्रोमोशन देखें

हम cookies का उपयोग करते हैं

हम अपनी साइट पर आपके अनुभव को बेहतर बनाने के लिए एनालिटिक्स cookies का उपयोग करते हैं। कोई भी डेटा तीसरे पक्ष को नहीं बेचा जाता है। हमारे बारे में और जानें गोपनीयता नीति.