در حالی که بسیاری از کاربران نیازمند یک سیستم مدیریتی دیتابیس مثل MySQL هستند اما شاید کار کردن با سیستمی که تنها داری MySQL است در آنها احساس رضایت ایجاد نکند.
به همین دلیل phpMyAdmin ساته شد تا کاربران از طریق یک رابط وب بتوانند با MySQL کار کنند. در اینجا قصد داریم آموزش نصب و امن سازی phpMyAdmin را توضیح دهیم تا بتوانید با خیال راحت از آن برای مدیریت دیتابیس های خود در یک سیستم Ubuntu 18.04 استفاده کنید.
پیش نیازها
قبل از شروع باید مراحل اولیه زیر را تکمیل کنید.
ابتدا اگر سرور شما با دستور sudo روت نشده و یا firewall با دستور ufw ساخته نشده باشد می توانید با استفاده از راهنمای تنظیمات اولیه سرور برای Ubuntu 18.04 آن را انجام دهید.
سپس باید برنامه LAMP (مخفف لینوکس، آپاچی، MySQL، و PHP ) را به طور کامل بر روی سرور خود نصب کرده باشید. در غیر این صورت می توانید با استفاده از راهنمای نصب LAMP در Ubuntu 18.04 این کار را انجام دهید.
در آخر، هنگام استفاده از نرم افزاری مثل phpMyAdmin باید نکات امنیتی مهمی را رعایت کنید که به شرح زیر است:
• برقراری ارتباط صرفا از طریق نصب MySQL
• مدیریت تاییدیه ها با استفاده مدارک MySQL
• اجرا و بازگردانی نتایج حاصله به SQL قراردادی
به دلایل بالا و همین طور گستردگی نرم افزار PHP که اغلب به آن حمله می شود، هرگز نباید phpMyAdmin را بر روی سیستم های HTTP اجرا کرد. اگر دامنه پیکربندی شده با SSL/TLS ندارید می توانید از راهنمای امنیت آپاچی در Ubuntu 18.04 استفاده کنید که در آن به ثبت کردن نام دامنه، ساخت رکورد DNS در سرور، و تنظیم کردن آپاچی مجازی می پردازد.
هنگامی که مراحل بالا را انجام دادید دیگر می توانید آموزش زیر را شروع کنید.
مرحله1: نصب phpMyAdmin
برای شروع، phpMyAdmin را از مخزن پیش فرض Ubuntu نصب می کنیم.
برای این کار ابتدا پکیج index سرور خود را به روز رسانی کرده سپس با استفاده از دستور apt فایل ها را تقسیم بندی کرده و روی سیستم نصب کنید:
sudo apt update $
sudo apt install phpmyadmin php-mbstring php-gettext $
در اینجا چند سوال از شما پرسیده می شود تا پیکربندی به درستی انجام شود.
هشدار: هنگامی که پیامی ظاهر شود یعنی”آپاچی 2 “هایلایت شده ولی هنوز انتخاب نشده است. اگر کلید SPACE را نزنید، در حین فرایند نصب فایل های ضروری انتقال نخواهند یافت. پس برای انتخاب آپاچی اول کلید SPACE را زده سپس کلید TAB را بزنید و درآخر کلید ENTER را فشار دهید.
• برای انتخاب سرور، گزینه apache2 را بزنید.
• اگر از شما پرسید برای تنظیمات دیتابیس از دستور dbconfig-common استفاده کند یا خیر، گزینه Yes را انتخاب کنید.
• سپس از شما می خواهد یک رمز عبور برای phpMyAdmin انتخاب کنید.
در این فرایند نصب، فایل های پیکربندی آپاچی به آدرس /etc/apache2/conf-enabled/ اضافه شده و به طور اتومانیک خوانده می شوند. تنها کاری که شما باید انجام دهید این است که دستور mbstring را به صورت زیر فعال کنید:
sudo phpenmod mbstring $
پس از آن آپاچی را ری استارت کرده تا تغییرات صورت گرفته اعمال شوند:
sudo systemctl restart apache2 $
اکنون phpMyAdmin نصب و پیکربندی شد. با این وجود قبل از وارد شدن و شروع به کار با دیتابیس MySQL، باید مطمئن شوید که کاربران MySQL دسترسی لازم برای کار با این برنامه را خواهند داشت.
مرحله 2: تنظیم تایید اعتبار کاربر و امتیازات
زمانی که phpMyAdmin را نصب می کنید به طور اتوماتیک یک کاربر دیتابیسی به نام phpmyadmin ساخته می شود که کارهای اساسی برنامه را انجام می دهد. به جای اینکه به عنوان یک کاربر اصلی با پسوردی که ساختید وارد شوید می توانید به عنوان یک کاربر روت شده یا یک کاربر اختصاصی نیز برای مدیریت کردن دیتابیس ها از طریق رابط phpmyAdmin لاگین شوید.
دسترسی به رمزعبور برای حساب کاربری روت شده MySQL
در سیستم های Ubuntu که 5.7MySQL (یا ورژن های بالاتر) اجرا شده است، کاربر روت شده به جای رمزعبور با استفاده از پلاگین پیش فرض auth_socket تایید می شود. این کار باعث امنیت بیشتر و کارایی بهتر می شود اما زمانی که باید به کاربر مجوز دسترسی به یک برنامه خارجی مثل phpMyAdmin داده شود باعث بروز مشکل خواهد شد.
زمانی که به عنوان کاربر روت شده MySQL، وارد phpMyadmin می شوید باید شیوه تایید را از حالت auth_socket به حالت mysql_native_password تغییر دهید. برای انجام این کار MySQL را از قسمت ترمینال باز کنید:
sudo mysql $
سپس با استفاده از دستور زیر چک کنید روش تایید حساب کاربری شما به چه صورت است:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+——————+——————————————-+———————–+———–+
| user | authentication_string | plugin | host |
+——————+——————————————-+———————–+———–+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+——————+——————————————-+———————–+———–+
5 rows in set (0.00 sec)
در مثال بالا دیدید که کاربر روت شده با استفاده از پلاگین auth_socket تایید شد. برای تایید حساب کاربری روت شده با استفاده از رمزعبور، دستور ALTER USER زیر را اجرا کنید. عبارت password را با یک رمزعبور قوی تغییر دهید:
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;
سپس دستور FLUSH PRIVILEGES را اجرا کنید که یعنی سرور جدول ها را مجددا بارگذاری کرده و تغییرات جدید را اعمال می کند:
FLUSH PRIVILEGES;
روش های تایید هر کدام از کاربران خود را با استفاده از پلاگین auth_socket دوباره بررسی کنید:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+——————+——————————————-+———————–+———–+
| user | authentication_string | plugin | host |
+——————+——————————————-+———————–+———–+
| root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+——————+——————————————-+———————–+———–+
5 rows in set (0.00 sec)
در این مثال دیدید که کاربر روت شده با استفاده از یک رمزعبور تایید شد. اکنون می توانید به عنوان یک کاربر روت شده با استفاده از رمزعبوری که ساختید به phpMyAdmin خود وارد شوید.
دسترسی به رمزعبور برای کاربر اختصاصی MySQL
برخی از افراد بر این باورند که بهتر است با یک کاربر اختصاصی به phpMyAdmin متصل شوند. برای این کار، یکبار دیگر MySQL را باز کنید:
sudo mysql $
توجه: اگر رمزعبور شما فعال است (همان طور که در قسمت قبل توضیح دادیم)، باید با یک دستور دیگر وارد MySQL شوید. با دستور زیر کلاینت شما با امتیازات کاربر معمولی اجرا شده و فقط امتیازات administrator را به دست خواهید آورد:
mysql -u root -p
سپس یک حساب کاربری جدید بسازید و رمزعبور قوی برای آن انتخاب کنید:
CREATE USER ‘sammy’@’localhost’ IDENTIFIED BY ‘password’;
حالا برای کاربر جدید خود امتیازاتی لحاظ کنید. برای مثال می توانید قدرت اضافه کردن، تغییر دادن و حذف کردن تمام جدول های داخل دیتابیس را به آن اختصاص دهید. برای این کار از دستور زیر استفاده کنید:
GRANT ALL PRIVILEGES ON *.* TO ‘sammy’@’localhost’ WITH GRANT OPTION;
سپس با این دستور از محیط MySQL خارج شوید:
exit
اکنون شما می توانید با مشاهده اسم دامنه سرور و یا IP آدرس عمومی خود به رابط وب دسترسی یابید. به این صورت:
http://your_domain_or_IP/phpmyadmin
با روش روت و یا با استفاده از نام کاربری و رمزعبور جدیدی که ساختید وارد رابط شوید.
هنگام ورود، رابطی شبیه به تصویر زیر خواهید دید:
اکنون می توانید به phpMyAdmin متصل شده و با آن کارکنید. تمام عملیات گفته شده به منظور محکم تر شدن سیستم امنیتی شما بوده تا در مقابل حمله ها در امان باشید.
مرحله 3: ایمن سازی رابط phpMyAdmin
phpMyAmin به دلیل دسترسی بالایی که دارد بسیار مورد حمله قرار می گیرد در نتیجه باید برای جلوگیری از دسترسی های غیر مجاز بیشتر از آن مراقبت کرد. ساده ترین راه این است که با استفاده از دستور .htaccess آپاچی یک دروازه در سراسر اپلیکیشن ایجاد کنیم.
برای این کار ابتدا باید با ویرایش کردن فایل پیکربندی آپاچی، استفاده از دستور .htaccess را فعال کنید.
لینک فایل هایی که در پیکربندی آپاچی قرار دارند را به صورت زیر ویرایش کنید:
sudo nano /etc/apache2/conf-available/phpmyadmin.conf $
دستور AllowOverride All را داخل کادر <Directory /usr/share/phpmyadmin> اضافه کنید. به این صورت:
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .
سپس فایل را ذخیره کرده و ببندید.
برای اعمال تغییرات، آپاچی را ری استارت کنید:
sudo systemctl restart apache2 $
اکنون که دستور .htaccess را فعال کردید باید ابزاری برای امنیت آن بسازید.
برای اینکه این کار با موفقیت انجام شود باید فایلی در داخل اپلیکیشن ساخته شود. می توانید با وارد کردن دستور زیر در ویرایشگر خود یک فایل ضروری ساخته و آن را باز کنید:
sudo nano /usr/share/phpmyadmin/.htaccess $
داخل این فایل اطلاعات زیر را وارد کنید:
AuthType Basic
AuthName “Restricted Files”
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
در اینجا معنی هر بند را توضیح می دهیم:
• AuthType Basic : نوع مجوزی که اجرا کردید را بیان می کند که در آن با استفاده از یک رمزعبور، اجازه اجرا داده می شود.
• AuthName : پیامی را برای تصدیق کادر محاوره ای ارسال می کند. شما باید آن را حفظ کرده تا کاربران غیر مجاز نتوانند به اطلاعات ذخیره شده دسترسی پیدا کنند.
• AuthUserFile : محل قرارگیری فایل رمز عبور را نشان می دهد که باید خارج از محدوده دایرکتوری باشد. به زودی این فایل را می سازیم.
• Require valid-user : نشان می دهد که فقط کاربران مجاز باید به منابع دسترسی داشته باشند و از ورود کاربران غیر مجاز جلوگیری می کند.
پس از اتمام، فایل را ذخیره کرده و آن را ببندید.
فایل رمز عبور خود را در آدرس /etc/phpmyadmin/.htpasswd ذخیره کردید. حالا می توانید با استفاده از htpasswd این فایل را ساخته و به عنوان اولین کاربر وارد آن شوید:
$ sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
در اینجا باید برای کاربری که ساختید یک رمزعبور انتخاب کرده و آن را تایید کنید. سپس فایلی با رمز عبور غیر قابل دیدن ( hashed password )ساخته خواهد شد.
اگر می خواهید کاربر دیگری اضافه کنید باید بدون وارد کردن –c این کار را انجام دهید. به این صورت:
sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser $
اکنون برای دسترسی به phpMyAdmin خود، باید نام کاربری و رمزعبوری که به تازگی ساختید را وارد نمایید:
https://domain_name_or_IP/phpmyadmin
پس از وارد نمودن مجوز آپاچی، به صفحه دائمی phpMyAdmin می روید. این setup یک بخش دیگری در ایمن سازی اضافه کرده که در زمان گذشته وقتی phpMyAdmin مورد آسیب قرار می گرفت بسیار از آن استقبال شد.
جمع بندی
اکنون باید phpMyAdmin خود را پیکربندی کرده و از آن در سرور Ubuntu 18.04 استفاده کنید. با استفاده از این رابط به راحتی می توانید دیتابیس، کاربر، جدول و… ساخته و کارهای معمولی مثل پاک کردن و تغییر دادن اطلاعات و ساختارهار را انجام دهید.