آشنایی با PhpMyAdmin و نسخه های مختلف آن

PhpMyAdmin ( پی اچ پی مای ادمین ) یک نرم افزار Web Based نوشته شده به زبان PHP به منظور فراهم آوردن یک Interface کامل برای مدیریت دیتابیس های MySQL است که از ابتدا به عنوان یک پروژه Open Source توسعه یافته و به ۸۰ زبان زنده دنیا ترجمه شده است. بزرگترین کمپانی های هاستینگ و توسعه دهندگان کنترل پنل هایی نظیر cPanel و Directadmin این نرم افزار را بر روی سرورهای خود نصب نموده و استفاده از آن را به کاربران خود توصیه می کنند.

بوسیله PhpMyAdmin می توان دستورات اصلی MySQL را بر روی دیتابیس های موجود در سرور اجرا نمود. در ادامه برخی از ویژگی های این نرم افزار قدرتمند و محبوب را با هم مرور می کنیم.

  • Create و Drop کردن دیتابیس
  • مدیریت دیتابیس های MySQL ( مای اس کیو ال ) و MariaDB ( ماریا دی بی )
  • Import دیتابیس در فرمت های SQL و CSV یا بصورت فایل فشرده
  • بک آپ گیری از دیتابیس در فرمت های CSV ، SQL ، XML و PDF
  • مدیریت یکپارچه چندین سرور
  • مدیریت کاربران و سطح دسترسی آنها
  • جستجو سراسری در تمامی دیتابیس ها
  • نمایش میزان Connection ها و مصرف CPU/Memory بصورت نمودارهای گرافیکی
  • Cross-Platform بودن و نصب بر روی سیستم عامل های مختلف

آنچه تا کنون درباره آن صحبت کردیم خلاصه ای از ویژگی ها کلی PhpMyAdmin بوده است. در ادامه با ویژگی های این نرم افزار در نسخه های مختلف آشنا می شویم.

نسخه های مختلف PhpMyAdmin و ویژگی های آنها

در بخش قبل به اختصار با برخی از قابلیت های PhpMyAdmin آشنا شدیم. در این قسمت بصورت دقیق تر به تفاوت نسخه های مختلف و Feature های اضافه شده در هر نسخه می پردازیم.

آخرین نسخه منتشر شده توسط تیم پشتیبانی این نرم افزار ، نسخه ۴٫۶ می باشد. در ادامه تفاوت نسخه های مختلف از نسخه ۳٫۰ تا ۴٫۶ آورده شده است.

PhpMyAdmin 3.0
نسخه ۳٫۰ در سال ۲۰۰۸ معرفی شده و برای نصب آن نیاز به PHP 5.2 و MySQL 5+ می باشد. نصب این نسخه به هیچ عنوان پیشنهاد نمی گردد چرا که دارای ضعف های امنیتی متعددی بوده و توسط تیم برنامه نویسی و توسعه پشتیبانی نمی گردد.

PhpMyAdmin 3.5
با آپگرید به نسخه ۳٫۵ قابلیت های زیادی به PhpMyAdmin اضافه خواهد شد. از برخی از این قابلیت ها می توان به استفاده از تکنولوژی AJAX در انجام Task های مختلف ، معرفی Theme جدید و بهبود مانیتورینگ MySQL Server از طریق بخش Status اشاره نمود. استفاده از Synchronization جهت همسان سازی ۲ دیتابیس هم بصورت لوکال و هم بصورت ریموت از دیگر موارد اضافه شده در این نسخه می باشد.

PhpMyAdmin 4.0
حذف Synchronization را می توان یکی از اساسی ترین تغییرات این نسخه به شمار آورد. البته این بدان معنا نیست که امکان همسان سازی ۲ دیتابیس از PhpMyAdmin حذف شده است ، بلکه با عرضه این نسخه می توان ۲ دیتابیس را از طریق Replication با یکدیگر همسان نمود. قابلیتی که در نسخه ۳٫۵ نیز وجود داشت اما بصورت آزمایشی بوده و حالا در نسخه ۴٫۰ تکمیل و به مرحله اجرا رسیده است.

اضافه شده بخش تغییر کلمه عبور در صفحه اصلی و رفع ضعف های امنیتی متعدد از دیگر تغییرات این نسخه می باشد.

از نسخه ۴ به بعد امکان طراحی ساختار دیتابیس بوسیله ابزار گرافیکی Designer فراهم شده است. این Feature بصورت پیش فرض فعال نمی باشد. برای فعال سازی آن می توانید به شکل زیر اقدام کنید :

بسته به تنظیمات سرور خود به این مسیر بروید:

path/to/phpmyadmin/config.inc.php/

 

حال این تغییرات را اعمال نمایید:

$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'yourpass';

 

فراموش نکنید حتما به کاربر pma کلمه عبور اختصاص دهید تا افراد دیگر قادر به مشاهده دیزاینر مد نباشند.

حال نام دیتابیس ها را تغییر دهید . همچنین به این نکته توجه داشته باشید که اسم جدول ها به بزرگی و کوچکی حروف حساس هستند.

$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';

 

در انتها باید یک اسکریپت sql که در مسیر زیر یافت می شود را اجرا نمایید:

path/to/phpmyadmin/scripts/create_tables_mysql_4_1_2+.sql/

 

به سادگی پس از اجرای این sql توسط ابزار import در phpmyadmin جداول و دیتابیس های بالا ایجاد می گردد.

PhpMyAdmin 4.4
برای نصب این ورژن نیاز به PHP 5.3 و MySQL 5.5+ می باشد. بخش Recent و Favorites که به ترتیب نمایش دهنده آخرین دستورات اجرا شده و Favorite Table می باشند در این نسخه به PhpMyAdmin اضافه شده اند. همچنین در این نسخه Designer بصورت پیش فرض فعال می باشد. قابلیت Ajax در هنگام اضافه نمودن Table جدید نیز حذف شده است.

Feature جدیدی نیز با نام Console در این نسخه اضافه شده است (با آیکن ترمینال و نام Console در پایین صفحه سمت چپ قابل مشاهده می باشد) که بوسیله آن می توان دستورات MySQL را بصورت Interactive اجرا نمود. تنها کافیست کوئری خود را در باکس مشخص شده وارد نموده و برای اجرای آن CTRL+ENTER را فشار دهید.

PhpMyAdmin 4.6
آخرین نسخه Stable و قابل نصب نیاز به PHP 5.5 بر روی سرور دارد. پشتیبانی از نسخه ۶ مرورگر IE به اتمام رسیده و یک Directive جدید به نام ssl_verify جهت رفع مشکل گواهی نامه های self-signed معرفی شده است که برای استفاده از آن می بایست نسخه PHP را به ۵٫۶ ارتقا داد. از دیگر تغییرات می توان به قابلیت بررسی Syntax کوئری های وارد شده در Console ، رفع مشکل تغییر کلمه عبور در دیتابیس های MariaDB و امکان پشتیبانی از JSON اشاره نمود.

تب جدیدی نیز با نام Plugins ایجاد شده که نشان دهنده اطلاعات تکمیلی در خصوص پلاگین های نصب شده بر روی MySQL Server می باشد.

نصب PhpMyAdmin

حال که با تفاوت نسخه های مختلف آشنا شدیم به سراغ نصب PhpMyAdmin می رویم. جهت نصب PhpMyAdmin تنها می بایست فایل مورد نظر را از سایت رسمی آن دانلود و برخی تغییرات را در تنظیمات وب سرور اعمال نماییم.

نصب بر روی آپاچی
ابتدا نسخه مورد نظر را از طریق لینک زیر بر روی سرور دانلود می نماییم:

https://www.phpmyadmin.net/downloads

 

معمولا مدیران سرور PhpMyAdmin را در یکی از مسیرهای زیر نصب می کنند.

usr/share/phpmyadmin/
var/www/html/

 

مشکلی در خصوص نصب در مسیرهای دیگر وجود ندارد و تنها می بایست پس از Extract نمودن فایل اقدام به اعمال تغییرات در وب سرور نماییم.

tar –xzvf phpMyAdmin-xxx.tar.gz
mv phpMyAdmin-xxx phpmyadmin

 

مسیر پیش فرض نصب سرویس آپاچی etc/httpd/ می باشد. اما چنانچه فایلی در این مسیر وجود نداشت می توان از طریق دستورات زیر فایل های تنظیمات آپاچی را پیدا نمود.

Redhab-Based Distros
rpm –qc httpd

Debian-Based Distros
dpkg –L httpd

 

حال با یکی از نرم افزار های ویرایش متن وارد فایل تنظیمات شده و Alias مورد نظر را ایجاد نماییم. این مورد را با یک مثال بر روی سیستم عامل CentOS بررسی می کنیم.

vim /etc/httpd/conf/httpd.conf
Alias /phpmyadmin /var/www/html/phpMyAdmin

 

همان طور که مشاهده می نمایید در مثال بالا برای پوشه phpMyAdmin قرارگرفته در مسیر var/www/html/ یک Alias تعریف نموده ایم. در آخر نیز سرویس آپاچی را ریستارت می کنیم.

service httpd restart

 

در نتیجه با وارد نمودن آدرس http://server-ip/phpmyadmin در مرورگر محتویات این پوشه نمایش داده خواهد شد.

نصب در DirectAdmin
تنها تفاوت نصب در دایرکت ادمین با بخش قبلی مسیر فایل تنظیمات وب سرور می باشد. تنظیمات Alias در دایرکت ادمین در فایل دیگری به مسیر زیر ذخیره می گردد.

etc/httpd/conf/extra/httpd-alias.conf/

 

نسخه پیش فرض PhpMyAdmin نصب شده بوسیله Custombuild 1 برابر با ۴٫۰ می باشد که می توان آن را بصورت Manual ارتقا داد. ضمنا با آپگرید Custombuild به نسخه ۲ و اجرای دستور build update/. آخرین نسخه PhpMyAdmin بر روی سرور نصب خواهد شد.

نصب در cPanel
مسیر قرار گیری phpMyAdmin در سی پنل بصورت زیر می باشد. فایل phpMyAdmin را دانلود و در این مسیر extract می نماییم.

usr/local/cpanel/base/3rdparty/

 

نسخه پیش فرض نصب شده بر روی cPanel 12 ، نسخه ۴٫۰ به همراه PHP 5.6 می باشد.

نصب بر روی Nginx
نصب بر روی انجینیکس مستلزم انجام بعضی تغییرات بر روی سرور می باشد.بصورت پیش فرض Nginx در مسیر etc/nginx/ نصب می گردد.

ابتدا مسیر اصلی قرار گیری فایل های وبسایت خود را مشخص می نماییم .

vim /etc/nginx/sites-available/default

#To do this we have to define the location for "root" parameter
#Pattern 1
root /var/www/html

#Pattern 2
root /usr/share/nginx/html

 

همانند تنظیمات آپاچی فایل PhpMyAdmin را دانلود و در یکی از مسیرهای مشخص شده Extract می کنیم.سپس Alias مورد نظر را در فایل default ایجاد می کنیم.

location /phpmyadmin {
alias /usr/share/nginx/html/phpmyadmin;
}

 

در آخر نیز سرویس nginx را ریست می کنیم.

service nginx restart

 

چنانچه در هنگام لود فایل های PHP در Nginx با مشکل عدم نمایش این نوع فایل ها مواجه شده و در عوض باکس دانلود فایل نمایش داده شد ، می بایست تغییرات زیر را در فایل default( و یا فایل تنظیمات nginx برای وبسایت مربوطه) اعمال نماییم(تغییرات زیر بر روی Nginx 1.10 و PHP7.0 انجام شده است)

index index.html index.php index.htm index.nginx-debian.html;

location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

 

تنظیمات کامل Nginx برای اجرای فایل های PHP و اتصال به دیتابیس از طریق PhpMyAdmin به شکل زیر می باشد.

#/etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server;

root /usr/share/nginx/html;

# Add index.php to the list if you are using PHP
index index.html index.php index.htm index.nginx-debian.html;

#Leave it alone
server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

location /phpmyadmin {
alias /usr/share/nginx/html/phpmyadmin;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}

 

import و export کردن دیتابیس در phpmyadmin

نحوه import و export کردن دیتابیس در پی اچ پی مای ادمین

در مطلب قبل آموزش import و export کردن دیتابیس توسط php را ارسال کردیم. در این مطلب روش راحت دیگری آموزش داده ایم. در این مطلب این کار را توسط phpmyadmin انجام می دهیم.

1.نحوه دسترسی به دیتابیس phpmyadmin  :

الف : نحوه دسترسی به phpmyadmin در صورتی که کنترل پنل سی پنل باشد :

در صورتی که از کنترل پنل هاست سی پنل استفاده می کنید ابتدا وارد پنل خود شوید و از قسمت Databases روی گزینه phpMyAdmin کلیک کنید.

در سی پنل لاگین به phpmyadmin خودکار است و نیازی به وارد کردن رمز دیتابیس نیست.

ب : نحوه دسترسی به phpmyadmin در صورتی که کنترل پنل دایرکت ادمین باشد :

پس از ورود به دایرکت ادمین از قسمت روی گزینه  MySQL Management کلیک کنید. سپس روی گزینه phpMyAdmin کلیک کنید. همچنین با وارد کردن آی پی سرور و سپس phpmyadmin می توانید بدون نیاز به ورود به پنل دایرکت ادمین وارد شوید. مثال : aaa.aaa.aaa/phpmyadmin

توجه داشته باشید در دایرکت ادمین ورود نام کاربری و رمز دیتابیس الزامی است.

ج : نحوه دسترسی به phpmyadmin در صورتی که پنلی روی سرور نصب نباشد :

اگر هیچ پنلی روی سرور شما نصب نشده است و فقط نرم افزار phpmyadmin را نصب کرده اید می توانید با وارد کردن آدرس آن وارد شوید. معمولا آی پی . سپس phpmyadmin است مثال : aaa.aaa.aaa/phpmyadmin

نحوه export کردن دیتابیس در phpmyadmin :

بعد از ورود به phpmyadmin مانند تصویر زیر از سمت چپ صفحه ابتدا دیتابیس خود را انتخاب کنید.

phpmyadmin

phpmyadmin

پس از کلیک روی دیتابیس مورد نظر در بالای صفحه روی گزینه Export کلیک کنید.

Export Method :

به دو روش Quick و Custom است. در روش Quick از تمام جداول دیتابیس خروجی می گیرید و در روش Custom می توانید از جداول مورد نیاز خود خروجی بگیرید.

همچنین تنظیمات دیگری در این قسمت وجود دارد.

Format را SQL انتخاب کنید و روی گزینه Go کلیک کنید. فایل را دانلود کنید.

نحوه import کردن دیتابیس در phpmyadmin :

ابتدا باید دیتابیس را ایجاد کنید. ( سی پنل – دایرکت ادمین) و سپس به phpmyadmin وارد شوید.

بعد از ورود به phpmyadmin مانند تصویر زیر از سمت چپ صفحه ابتدا دیتابیس خود را انتخاب کنید.

phpmyadmin

phpmyadmin

سپس روی گزینه import کلیک کنید و در قسمت Browse your computer فایل دیتابیس را انتخاب کنید.

Character set of the file را روی utf-8 قرار دهید و روی گزینه Go کلیک کنید.

آموزش ریستور کردن فایل های بزرگ و حجیم دیتابیس MYSQL در SSH لینوکس

ریستور کردن فایل های دیتابیس پر حجم و بزرگ از طریق محیط ssh در سیستم عامل لینوکس سرور

یکی از بزرگ ترین مشکلات مشتریانی که از هاست اشتراکی و میزبانی وب لینوکس به سرور مجازی یا سرور اختصاصی کوچ میکنند مشکل ریستور کردن فایل های sql بزرگ و حجیم در MySQL سرور لینوکس است . برنامه هایی مانند phpmyadmin یا MySQL  Dumper قادر به ذخیره سازی و ریستور کردن و بازیابی دیتابیس های خیلی بزرگ و حجیم نیستند و در صورت انتقال و ریستور کردن با آن ها همیشه احتمال و خطر بازیابی ناقص اطلاعات و آسیب دیدین دیتابیس وجود دارد .

از طرفی همیشه امکان ریستور کردن بکاپ کلی یا Full Backup برای خریدار سرور مجازی یا سرور اختصاصی امکان پذیر نیست . مثلا فول بکاپ توسط کنترل پنل cPanel ایجاد شده است ولی سرور مقصد از کنترل پنل دایرکت ادمین یا کلوکسو استفاده میکند . در این وضعیت هیچ راهی نیست جز استفاده از دستورات و کامند های ssh در لینوکس . در صورت استفاده صحیح از این کامند ها و دستورات برای بازیابی و ریستور کردن فایل های MySQL و دیتابیس ، قادر خواهید بود به راحتی فایل های MySQL با پسوند .sql و حجم های بالای ۱۵ و ۲۰ گیگ را در کمترین زمان ممکن و بدون خطا و آسیب دیدن به اطلاعات بازیابی و ریستور کنید .

قبل از انجام ریستور کردن دیتابیس توسط دستورات لینوکس در محیط ssh ابتدا باید اندازه پارامتر max_allowed_packet را بر اساس حجم دیتابیس مورد نظر تنظیم نمایید . برای ایجاد تغییرات در این پارامتر باید فایل my.cnf در مسیر /etc/ را ادیت کرده و میزان مورد نظر خود را وارد نمایید . سپس فایل را ذخیره کرده و سرویس MySQL را ریست کنید .

حالا وارد کنترل پنل وب هاستینگ سرور خود شوید و یک دیتابیس جدید ایجاد کنید . سپس نام کاربری و کلمه عبور این دیتابیس جدید را ساخته و به آن اختصاص دهید . حالا از طریق ssh وارد فولدر و پوشه ای شوید که فایل .sql در آن واقع شده است . با دستورات زیر اقدام به بازیابی و ریستور کردن این فایل .sql داخل دیتابیس MySQL ساخته شده در کنترل پنل وب هاستینگ خود نمایید :

mysql -u dbuser -p  dbname < db.sql

با زدن کلید Enter سیستم عامل از شما رمز و کلمه عبور دیتابیس ساخته شده در کنترل پنل را میخواهد که با وارد کردن آن عملیات بازیابی و ریستور کردن دیتابیس آغاز میگردد . اگر به کلمه عبور MySQL Root Password دسترسی دارید میتوانید بدون نیاز به کلمه عبور و نام کاربری دیتابیس اقدام به بازیابی و ریستور کردن آن با یوزر root پایگاه داده MySQL نمایید :

mysql -u root -p  dbname < db.sql

مشکل ایمپورت کردن دیتابیس های بزرگ و پر حجم در PHPMYADMIN

اسکریپت phpmyadmin معروف ترین برنامه مدیریت تحت وب دیتابیس های مبتنی بر MySQL است که تقریبا تمام کنترل پنل های وب هاستینگ معروف لینوکس ، از آن به عنوان اولین یا تنها برنامه مدیریت دیتابیس های MySQL استفاده میکنند .  ریستور کردن و ایمپورت دیتابیس های بزرگ MySQL  به کمک زبان php و به واسطه اسکریپت phpmyadmin به هیچ عنوان پیشنهاد نمیشود (به دلیل احتمال بروز خطا با ایمپورت ناقص دیتابیس) ، بنا بر این فقط زمانی اقدام به انجام این کار کنید که حجم دیتابیس شما حد اکثر ۲۰ یا ۳۰ مگابایت و سرعت کانکشن و اینترنت شما نیز حد اقل ۵۱۲ است . در غیر این صورت احتمال ایمپورت ناقص و خراب شدن دیتابیس بسیار زیاد است .

در بیشتر سرور های میزبانی وب مبتنی بر کنترل پنل های وب هاستینگ سی پنل و دایرکت ادمین ، حد اکثر حجم مجاز آپلود فایل توسط php به صورت پیش فرض روی ۸ مگابایت محدود شده است . بنا بر این در صورت ایمپورت کردن و آپلود کردن دیتابیس های بزرگ تر از ۸ مگابایت با پیام های خطایی مشابه زیر مواجه خواهید شد :

You probably tried to upload too large file. Please refer to documentation for ways to workaround this limit.

the file size exceeded the maximum size permitted by your PHP configuration

برای حل این مشکل و رفع محدودیت حجم آپلود و ایمپورت دیتابیس های MySQL کافی است تا فایل php.ini را ویرایش کرده و مقادیر زیر را به این شکل افزایش دهید :

memory_limit = 128M
post_max_size = 128M
upload_max_filesize = 128M
max_execution_time = 300
max_input_time = 300

بعد از انجام  تغییرات فوق در فایل php.ini اقدام به ریستارت کردن وب سرور و/یا اجرا کننده php کنید تا تغییرات در سرور اعمال شوند :

service httpd restart

با مراجعه مجدد به صفحه ایمپورت phpmyadmin مشاهده خواهید کرد که محدودیت ۸ مگابایتی آپلود دیتابیس به ۱۲۸ مگابایت افزایش پیدا کرده است .

برای ریستور کردن دیتابیس های بزرگ تر از ۲۰ مگابایت حتما از طریق SSH و دستورات مربوط به MySQL استفاده کنید  .