PHPMyAdmin یا PMA یک دیتابیس مبتنی بر وب رایگان و open source عالی است که میتواند برای تعامل راحتتر با MySQL و برنامههای دیتابیس، مورد استفاده قرار گیرد. در این مقاله به آموزش نحوه نصب PHPMyAdmin، تامین امنیت آن و همچنین برخی نکات برای مدیریت یک دیتابیس، خواهیم پرداخت. برای مشاهده دمو این برنامه بهصورت آنلاین به این لینک مراجعه کنید.
PMA علاوه بر دارا بودن یک رابط کاربری گرافیکی GUI برای انجام عملیات در دیتابیس، امکان استفاده از دستورات SQL از طریق مرورگر و بدون نیاز به ورود به یک سرور از طریق SSH را دارد. بهعنوان مثال، برخی شبکههای WiFi و Hotspotهای تلفن همراه بهطور مرتب سبب اختلال در ارتباطهای SSH شده و فرایندهای اجرایی در دیتابیس را با مشکل مواجه میکنند.
آموزش نصب PHPMyAdmin روی Ubuntu
شروع کار با PHPMyAdmin در لینوکس بسیار ساده است. در این مقاله نحوه نصب PHPMyAdmin را بر روی Ubuntu 14.x شرح خواهیم داد. از طریق SSH به سرور متصل شوید.
apt-get install phpmyadmin
میتوانید در حین نصب PHPMyAdmin از تنظیمات پیش فرض استفاده کرده یا آنها را بهدلخواه خود تنظیم کنید. وقتی دسترسی به MySQL را فقط به localhost محدود کنید (که البته باید هم این محدودیت را اعمال کنید)، تمامی پورتهای دسترسی ریموت به MySQL جهت جلوگیری از دسترسی هکرها مسدود میشود. هکرها ممکن است سعی کنند از طریق SSH وارد شوند یا از طریق SQL Injection اقدام به حمله علیه دیتابیس شما بکنند، اما نمیتوانند مستقیماً به پایگاه داده حمله کنند. پس از نصب PHPMyAdmin، هر کسی میتواند برای به دست آوردن کنترل پایگاه داده شما اقدام به انجام حملات مبتنی بر وب کند، بنابراین مراقبت در این خصوص ضروری است. در ادامه به برخی موارد احتیاطی توصیه شده در هنگام اعمال تنظیمات PMA خواهیم پرداخت.
تنظیمات نصب PHPMyAdmin
۱- برای تمامی اکانتهای MySQL، بهویژه حساب root، از رمزهای عبور بسیار قوی استفاده کنید. بهعنوان مثال ۲۵ کاراکتر برای پسورد اصلی.
۲- برای هر سایت یا اپلیکیشن موجود بر روی یک سرور، از اکانتها و مجوزهای متفاوت MySQL استفاده کنید. به این ترتیب اگر یک رمز عبور دچار مشکل شود، تنها دیتابیس مربوط به یک سایت بهخطر میافتد.
۳- URL پیش فرض مورد استفاده توسط PMA را تغییر دهید. به این ترتیب کاربران نمیتوانند از آدرس http://yourblog.com/phpmyadmin بازدید کنند. اگرچه این تکنیک امنیتی، روش چندان مؤثری بهشمار نمیرود، اما میتواند تا حدودی محافظ باشد.
به فایل apache.conf بهصورت زیر یک alias اضافه کنید:
nano /etc/phpmyadmin/apache.conf
Alias /myobscuredpma /usr/share/phpmyadmin
Apache را مجدداً راه اندازی کنید:
service apache2 reload
سپس برای دسترسی به PMA، به آدرس http://yourblog.com/myobscuredpma مراجعه کنید.
در صورت نیاز به تغییر رمز عبور PHPMyAdmin، میتوانید فایل config-db.php را بهصورت زیر ویرایش کنید:
nano /etc/phpmyadmin/config-db.php
۴- تنظیمات web Authentication را برای سایت PMA اعمال کنید. این کار مستلزم آن است که یک رمز عبور اضافی برای دسترسی به PMA علاوه بر رمز عبور دیتابیس خود، مانند تصویر زیر وارد کنید:
برای تنظیم محدودیتها و سطح دسترسی کاربران Apache، مراحل زیر را انجام دهید:
htpasswd را بهعنوان بخشی از ابزارهای apache2-utils نصب کنید:
apt-get install apache2-utils
برای ذخیره رمزهای خود یک دایرکتوری ایجاد کنید:
mkdir /etc/htpasswd
برای پشتیبانی از PMA میبایست htaccess اضافه کنید:
nano /etc/phpmyadmin/apache.conf
و در پایان دستور AllowOverride All را مشابه مثال زیر اضافه کنید:
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
user authentication را برای PMA تنظیم کنید:
nano /usr/share/phpmyadmin/.htaccess
AuthType Basic
“AuthName “Login Required forAccess
AuthUserFile /etc/htpasswd/.htpasswd
Require valid-user
کلمه عبور را تعریف کنید:
htpasswd -c /etc/htpasswd/.htpasswd username
و آپاچی را مجدداً restart کنید:
service apache2 restart
به آدرس PMA خود مراجعه کنید و همانطور که در بالا مشاهده شد، از شما خواسته میشود نام کاربری و رمز عبور خود را وارد کنید.
کار با PHPMyAdmin
۱- نحوه Create و Drop یک دیتابیس
استفاده از PMA بهخصوص در مراحل توسعه و تست، یعنی در مراحلی که میخواهید دیتایس را مجدداً نصب کنید، یا اینکه بهدفعات از عملیات خود نسخه بکآپ تهیه کنید، بسیار مفید است.
بدون PMA بایستی هر بار از طریق SSH به سرور متصل شوید، وارد MySQL شده و سپس دستور زیر را اجرا کنید:
;create database myapp
grant all privilegeson myapp_database.* TO “your-mysql-username“@”localhost” identified by “your-mysql-password“;
;flush privileges
با PMA میتوان جستجو یا queryهای مختلفی را اجرا کرد. روی تب SQL کلیک کنید و دستورالعملهای پایگاه داده MySQL را در آن کپی کنید. سپس بر روی Go کلیک کنید تا دیتابیس ایجاد شود.
یا میتوانید مستقیماً از visual interface استفاده کنید:
همچنین میتوانید افزودن یا حذف کاربران و همچنین تعیین مجوزهای آنان را نیز از همین طریق انجام دهید. بر روی تب privileges کلیک کنید:
بر روی add user کلیک کنید و مجوزهای مربوطه را برای دیتابیس مورد نظر خود تنظیم کنید:
برای اکانت دیتابیس یک اپلیکیشن معمولی باید چک باکسهای Data و Structure را انتخاب و فعال کنید. برای حذف یک دیتابیس نیز به منوی Databases رفته و بر روی دیتابیسی که میخواهید حذف کنید، کلیک کرده و سپس بر روی Drop کلیک کنید.
۲- تهیه بک آپ از دیتابیس
تهیه یک نسخه بکآپ از دیتابیس، قبل از انجام هرگونه عملیات تغییر و توسعه در پایگاه داده یا بهروزرسانی کدها یک ایده بسیار خوب و منطقی است. زیرا در صورت بروز هرگونه مشکل احتمالی میتوانید سایت خود را از طریق نسخه بکآپ مجدداً ریستور کنید.
با استفاده از رابط وب PMA، بر روی دیتابیس خود کلیک کنید، سپس بر روی تب Export کلیک کنید و گزینه Custom را انتخاب کنید.
گزینه تحت عنوان “Add Drop Table / View / Procedure / Function / Event” را فعال کنید:
با کلیک بر روی PMA، Go یک نسخه پشتیبان از کل دیتابیس شما را دانلود میکند. اگر تنظیمات مربوط به timeout در Apache PHP به درستی انجام نشده باشد، ممکن است دانلود فایلها با حجم بالا و زمان طولانی و بهصورت ناقص یا ناموفق انجام شود.
۳- تست query ها
PMA عملکردی فوق العاده در تست quey SQL ها بهنگام توسعه یک اپلیکیشن دارد. دیتابیس خود را انتخاب کنید، بر روی Query کلیک کنید. جستجوهای پیچیده خود را کپی یا ویرایش کرده و آنها را مستقیماً از طریق PMA تست کنید:
پس از اطمینان از صحت عملکرد جستجوها و queryها، راحتتر میتوانید کد ActiveRecord را بنویسید. بهمثال زیر توجه کنید:
$dataProvider = new CActiveDataProvider(Place::model()->active()->includesMember($id),
array('criteria'=> $criteria,
'pagination'=> array(
'pageSize'=> 10,
),
));
۴- اصلاح ورودی های دیتابیس
اگر یک توسعه دهنده هستید، به احتمال زیاد به باگهایی در یک برنامه برخوردهاید که منجر به خرابی دیتابیس شما شود. درست است؟
بهعنوان مثال، برخی از برنامههای مدیریت ایمیل گاهی اوقات بر روی پیامهای غیرمعمول دریافت شده گیر میکند. پیدا کردن این باگها و اشکالات بههنگام انجام تستهای منظم بسیار دشوار است. هنگامی که این اتفاق میافتد، میتوانید مستقیماً از طریق PMA دیتابیس را اصلاح کنید تا مشکل پیش آمده بر طرف گردد و تسکهای قبلی حذف شده و سایت مجدداً فعال شود. در بعضی موارد صرفاً بازبینی جداول میتواند به شما در تشخیص عیبها و اشکالات کمک کند.
در PMA دیتابیس مورد نظر را باز کرده و جدول خود را انتخاب کنید. بر روی ستون مربوطه دابل کلیک کنید تا مستقیماً بتوانید آن را در جای خود ویرایش کنید. تغییرات مورد نیاز خود را انجام داده و بر روی Return کلیک کنید:
۵- ریست کردن دیتابیس برای انتقال
اگر از یک فریم ورک (مانند Yii) استفاده میکنید، میتوانید ازprogrammatic database migrations استفاده کنید. Database migrations توسعه امکانات و بهروزرسانی اپلیکیشن را آسانتر میکند. اگرچه تست آنها ممکن است سبب بروز مشکلاتی در دیتابیس لوکال شما شود. بهطور معمول ممکن است که با خطاهای migration دیتابیس مواجه شوید و نتوانید بهدلیل بروز اشکالاتی از جمله undropped indexes ،foreign keys یا جداول خارجی، انتقال به بالا یا پایین داشته باشید. در این حالت میتوانید از PMA برای حذف جدول و حذف index files ناخواسته استفاده کنید. در PMA دیتابیس خود را انتخاب کنید، بر روی تب SQL کلیک کنید و برای حذف foreign key یا index وارد SQL شوید. در تصویر زیر چند نمونه آورده شده است:
در این مقاله سعی کردیم به آموزش نحوه نصب PHPMyAdmin در لینوکس، تامین امنیت آن و همچنین برخی نکات برای مدیریت دیتابیس، بپردازیم. چنانچه در مورد نحوه نصب یا تنظیمات آن به مشاوره نیاز داشتید با تیم فنی سینداد تماس حاصل کنید.
سینداد یعنی هدیهی سیمرغ، یا فرزند سیمرغ؛ به عبارتی یعنی خود سیمرغ، با همه ی شگفتی هایش، اما جوانتر و سرزنده تر. و این چیزی است که ما سعی می کنیم در سینداد باشیم. از سال ۱۳۸۵ دانش مان را به صورت خدماتی در حوزه ی هاستینگ، شبکه و تولید نرم افزار در اختیار مشتریان مان قرار داده ایم و به این افتخار می کنیم که تک تک آنها تا به امروز همراه ما مانده اند. باور داریم که سینداد صرفاً یک شرکت نیست، بلکه نوعی باور است به ارائه ی شگفت انگیز از هر چیز.
سینداد یعنی هدیهی سیمرغ، یا فرزند سیمرغ؛ به عبارتی یعنی خود سیمرغ، با همه ی شگفتی هایش، اما جوانتر و سرزنده تر. و این چیزی
است که ما سعی می کنیم در سینداد باشیم. از سال ۱۳۸۵ دانش مان را به صورت خدماتی در حوزه ی هاستینگ، شبکه و تولید نرم افزار
در اختیار مشتریان مان قرار داده ایم و به این افتخار می کنیم که تک تک آنها تا به امروز همراه ما مانده اند. باور داریم که
سینداد صرفاً یک شرکت نیست، بلکه نوعی باور است به ارائه ی شگفت انگیز از هر چیز.