phpMyAdmin এবং Adminer: ডেটাবেস প্যানেল
VDS-এ ডেটাবেসের জন্য ওয়েব প্যানেল কীভাবে ইনস্টল করবেন এবং সেটি যাতে অনুপ্রবেশের দরজা না হয়ে যায় সেভাবে সুরক্ষিত করবেন: পাসওয়ার্ড অ্যাক্সেস, অ্যাড্রেস সীমাবদ্ধতা, বিকল্প।
আপডেট: ২৩ আগস্ট, ২০২৬
একটি ওয়েব প্যানেল এককালীন সম্পাদনা এবং টেবিল দেখার জন্য সুবিধাজনক। এটি সার্ভার কম্প্রোমাইজের সবচেয়ে সাধারণ কারণও: /phpmyadmin URL-গুলো স্বয়ংক্রিয়ভাবে ব্রুট-ফোর্স করা হয়, এবং লগইন ফর্ম সরাসরি ডেটাতে অ্যাক্সেস দেয়।
Adminer: একটি একক ফাইল
Adminer একটি একক PHP ফাইল এবং MySQL, PostgreSQL ও SQLite সমর্থন করে। ইনস্টল করার মতো কিছু নেই:
mkdir -p /var/www/tools
curl -L -o /var/www/tools/adminer.php \
https://github.com/vrana/adminer/releases/latest/download/adminer.php
chown www-data:www-data /var/www/tools/adminer.php
আপনার একটি কার্যকর PHP-FPM প্রয়োজন। ফাইলটির নাম এমন কিছু অপ্রত্যাশিত রাখা ভালো — এটি সুরক্ষা নয়, তবে ব্যাপক স্ক্যানিং দূর করে।
phpMyAdmin
apt install -y phpmyadmin
প্যাকেজটি স্বয়ংক্রিয়ভাবে Apache-এর সাথে সংযুক্ত হয়; Nginx-এর জন্য পাথটি ম্যানুয়ালি উল্লেখ করুন:
location /db-panel {
alias /usr/share/phpmyadmin;
index index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
}
প্রয়োজনীয় সুরক্ষা
এই তিনটি ছাড়া কখনোই প্যানেল ইনস্টল করবেন না।
শুধুমাত্র আপনার ঠিকানা থেকে অ্যাক্সেস:
location /db-panel {
allow 203.0.113.10;
deny all;
}
ওয়েব সার্ভার স্তরে একটি অতিরিক্ত পাসওয়ার্ড:
apt install -y apache2-utils
htpasswd -c /etc/nginx/.htpasswd admin
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
আর তৃতীয়টি হলো শুধুমাত্র HTTPS: Let's Encrypt সার্টিফিকেট। এটি ছাড়া ডেটাবেস পাসওয়ার্ড প্লেইন টেক্সটে পাঠানো হয়।
সেরা বিকল্প: বাইরে থেকে কোনো প্যানেল প্রকাশ না করা
আপনার ঠিকানা যদি ডাইনামিক হয়, তাহলে প্যানেলটি একেবারেই প্রকাশ করবেন না। একটি SSH টানেল সেট আপ করুন এবং ডেস্কটপ ক্লায়েন্ট — DBeaver, TablePlus, HeidiSQL — দিয়ে কাজ করুন:
ssh -L 3307:127.0.0.1:3306 root@YOUR_ADDRESS -N
বিস্তারিত — রিমোট অ্যাক্সেস। এভাবে বাইরে থেকে SSH ছাড়া কিছুই প্রকাশিত হয় না, এবং আপনার প্যানেলের প্রয়োজনই পড়ে না।
সাধারণ ভুল
| লক্ষণ | কারণ |
|---|---|
ব্রাউজার adminer.php ডাউনলোড করে | এই পাথে PHP সংযুক্ত নয় |
#1045 Access denied | ডেটাবেস ব্যবহারকারী ভিন্ন হোস্টের সাথে বাঁধা |
| বড় ডাম্প ইমপোর্ট মাঝপথে বন্ধ হয়ে যায় | upload_max_filesize এবং max_execution_time খুব ছোট; কনসোল থেকে ইমপোর্ট করা ভালো |
লগে /phpmyadmin-এ হাজার হাজার রিকোয়েস্ট | রুটিন স্ক্যানিং — প্যানেলটি বন্ধ করা উচিত |
| প্যানেল কাজ করে, কিন্তু সাইট করে না | প্যানেলের ভারী রিকোয়েস্টে শেয়ার্ড PHP-FPM পুল শেষ হয়ে যায় |
বড় ডেটাবেসে ওয়েব প্যানেলের মাধ্যমে ডাম্প টাইমআউট হয়। প্রকৃত ব্যাকআপ কনসোল থেকে নির্দিষ্ট সময়সূচিতে তৈরি হয় — ডেটাবেস ব্যাকআপ।