MySQL با یک پیکربندی پیشفرض همراه است که برای کاربرانی که وبسایت و سرور MySQL خود را در یک سیستم لینوکس میزبانی میکنند، کامل و کافی است. اما اگر بخواهید سیستمها و کاربران دیگری را به سرور MySQL خود متصل کنید، چه؟ این مقاله به شما کمک میکند تا یاد بگیرید چگونه اتصال راه دور به MySQL در لینوکس را فعال کنید. هنگامی که یک سرور لینوکس میخرید، آماده نصب یک سرور MySQL بر روی آن هستید که تنها اتصالات ورودی از خودش را میپذیرد، زیرا فقط گوش دهنده اتصالات از localhost است.
اما اگر تصمیم بگیرید. نه تنها از روی همان سرور اطلاعات را از پایگاه داده بخوانید و بنویسید، باید اتصالات راه دور به سرور MySQL خود را فعال کنید. برای انجام این کار، به سرویس MySQL یک آدرس IP عمومی در سرور خود اختصاص دهید و فایروال سیستم خود را برای پذیرش اتصالات ورودی MySQL پیکربندی کنید. با این راهنما همراه شوید تا تمام مراحل لازم برای فعال کردن اتصال راه دور به سرور MySQL در لینوکس را مرور کنیم.
پیشنیازهای فعال کردن اتصال راه دور به MySQL در لینوکس
برای فعال کردن اتصال راه دور به سرور MySQL، باید پیکربندی اضافی انجام دهید. اما قبل از آن، گزینههای زیر را در نظر بگیرید تا این آموزش به درستی کار کند:
یک سرور با سیستم عامل لینوکس در حال اجرا
یک کاربر غیر ریشه (non-root) با امتیازات سودو (sudo)
نرم افزار MySQL نصب شده
آموزش فعال کردن اتصال راه دور به MySQL
امروزه شنیدن درباره اتصالات راه دور چیز تعجب آوری نیست. نسخه جدید اتصال افراد، کارمندان و کسب و کارها به یکدیگر. پس از نصب یک سرور MySQL در یک سیستم لینوکس، میتوانید شرایطی را فراهم کنید تا از سیستم محلی خود به سرور MySQL راه دور متصل شوید و با تمام برنامههای در حال اجرا در رایانههای مختلف از سرور پایگاه داده در ارتباط باشید.
پس از خرید سرور مورد نظر خود برای میزبانی وب سایتتان، مدیریت اطلاعات در پایگاه دادهها برای محافظت از آنها امری مهم است. قبلاً درباره سیستم مدیریت پایگاه داده خواندید. به ویژه اگر میخواهید از یک مکان راه دور به سرور MySQL دسترسی داشته باشید، استفاده از DBMS برای محافظت از تمام دادههای ارزشمند شما ضروری است.
بیایید شروع کنیم تا یاد بگیریم برای فعال کردن اتصال راه دور به یک سرور MySQL چه کارهایی باید انجام شود تا تمام کاربران و رایانههای در نظر گرفته شده شما بتوانند به دادههای شما دسترسی داشته باشند. برای تکمیل این فرآیند و فعال کردن اتصال راه دور به MySQL، تنها ۳ مرحله لازم است.
مرحله ۱: پیکربندی سرور MySQL برای دسترسی از ماشینهای راه دور
برای راهاندازی سرور MySQL، وضعیت ارتباطی MySQL خود را بررسی کنید. اگر سرور و کلاینتهای MySQL میتوانند از طریق یک شبکه خصوصی ارتباط برقرار کنند، باید فقط به آدرس IP خصوصی گوش دهد. اما اگر ترجیح میدهید از طریق یک شبکه عمومی به سرور متصل شوید، باید سرور MySQL را طوری تنظیم کنید که به تمام آدرسهای IP روی ماشین گوش دهد.
سرور MySQL شما باید برای دسترسی از سیستمهای راه دور راهاندازی شود. برای این کار، باید یک آدرس اتصال عمومی (تغییر گزینههای مقدار) را در فایل پیکربندی MySQL تنظیم کنید.
بنابراین، با استفاده از ویرایشگر متن مورد علاقهتان، فایل /etc/mysql/mysql.cnf را باز کنید.
$ sudo nano /etc/mysql/mysql.cnf
مقدار به طور پیشفرض ۱۲۷.۰.۰.۱ تنظیم شده است. بنابراین، خطوطی را که bind-address را نشان میدهد پیدا کنید تا مقدار آن را به آدرس IP که سرور MySQL باید به آن گوش دهد، تغییر دهید. آدرس IP عمومی سرور خود را به جای آدرس پیشفرض قرار دهید.
[mysqld]
bind-address = Your IP
همچنین، استفاده از wildcard 0.0.0.0 به عنوان آدرس اتصال میتواند در هنگام رفع مشکل به شما کمک کند، اما توصیه نمیشود.
[mysqld]
bind-address = 0.0.0.0
پس از اتمام کار، تغییرات را ذخیره کنید و از فایل خارج شوید. دستور زیر را اجرا کنید تا سرویس MySQL را راهاندازی مجدد کنید و تغییرات اعمال شود.
در دبیان و اوبونتو:
$ sudo systemctl restart mysql
در توزیعهای مبتنی بر RedHat مانند CentOS:
$ sudo systemctl restart mysqld
مرحله ۲: پیکربندی فایروال برای اجازه دسترسی راه دور از طریق آن
MySQL به طور پیشفرض بر روی پورت ۳۳۰۶ اجرا میشود. در این مرحله، نحوه اجازه دسترسی راه دور از طریق فایروال سیستم خود را برای نزدیکتر شدن به فعال کردن اتصال راه دور به MySQL بررسی خواهید کرد. بسته به توزیعی که استفاده میکنید، دستور متفاوت خواهد بود. ببینید چه چیزی با فایروال سیستمهای شما سازگار است.
در اوبونتو:
$ sudo ufw allow mysql
هر سیستم دیگری که از فایروال ساده (ufw) استفاده میکند، میتواند دستور بالا را برای اجازه دسترسی راه دور از طریق فایروال اجرا کند.
در Red Hat، CentOS و Fedora:
$ sudo firewall-cmd --zone=public --add-service=mysql --permanent
$ sudo firewall-cmd --reload
تمام سیستمهای مشتق شده که از firewalld استفاده میکنند، میتوانند دستور بالا را برای اجازه دسترسی راه دور از طریق فایروال اجرا کنند.
اگر قصد دارید دسترسی از یک آدرس IP خاص در یک پورت خاص را اجازه دهید، یک ناحیه جدید با نام “mysqlzone” ایجاد کنید، همانطور که در زیر میبینید:
sudo firewall-cmd --new-zone=mysqlzone --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlzone --add-source=Your IP
sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp
sudo firewall-cmd --reload
iptables تقریباً در هر سیستمی کار میکند. برای اجازه دسترسی از هر آدرس IP در اینترنت به پورت MySQL، میتوانید از دستور زیر استفاده کنید، زمانی که از iptables به عنوان فایروال خود استفاده میکنید.
$ sudo iptables -A INPUT -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
در نهایت، بررسی اینکه آیا کاربر راه دور میتواند به سرور MySQL متصل شود یا خیر، یک ایده خوب است. برای تأیید، اجرا کنید:
mysql -u user_name -h mysql_server_ip -p
بنابراین، اگر میتوانید به راحتی به سرور MySQL راه دور وارد شوید، میتوانید مطمئن شوید که همه چیز به طور کامل راهاندازی شده است.
توجه: منظور از دستور زیر این است:
user_name: نام کاربری که به آن دسترسی اعطا کردهاید.
mysql_server_ip: آدرس IP میزبانی که سرور MySQL در آن در حال اجرا است
مرحله ۳: پیکربندی کاربر خود برای پذیرش اتصالات راه دور
در نهایت، مرحله سوم برای فعال کردن اتصال راه دور به MySQL در لینوکس، اعطای دسترسی به یک کاربر خاص از یک ماشین راه دور است. پس از فعال کردن سرویس MySQL برای پذیرش اتصالات ورودی و سپس اجازه دادن فایروال به آنها، زمان آن رسیده است که به کاربر راه دور دسترسی به پایگاه داده را اعطا کنید.
ابتدا، دستور زیر را برای ورود به سرور MySQL با حساب ریشه (root) خود اجرا کنید:
$ sudo mysql
در برخی پیکربندیها مانند پلاگینهای احراز هویت قدیمی و بومی MySQL، از دستور زیر استفاده کنید و رمز عبور ریشه خود را وارد کنید.
$ mysql -u root -p
در اینجا، باید کاربری را که ایجاد کردهاید پیکربندی کنید تا از آدرس IP قابل دسترسی باشد. دوباره دستور زیر را با پیکربندی خودتان تطبیق دهید.
در اینجا، از دستور RENAME USER استفاده میکنیم:
mysql> RENAME USER 'ZoipVPS'@'localhost' TO 'ZoipVPS@'Your IP';
اما اگر کاربری ایجاد نکردهاید و این اولین باری است که یکی را ایجاد میکنید، از دستور CREATE USER استفاده کنید و فقط به یاد داشته باشید که نام کاربری، آدرس IP و رمز عبور خود را جایگزین کنید.
mysql> CREATE USER 'ZoipVPS'@'Yourr IP' IDENTIFIED BY 'password_here';
برای اینکه کاربر شما از هر آدرس IP قابل دسترسی باشد، در دستور خود به جای یک آدرس IP خاص، از % استفاده کنید. میتوانید نحوه ویرایش کاربر موجود برای قابل دسترسی بودن از هر آدرس IP را در زیر ببینید.
mysql> RENAME USER 'ZoipVPS'@'localhost' TO 'ZoipVPS'@'%';
همچنین میتوانید از دستور زیر برای ایجاد یک کاربر جدید که از هر آدرس IP قابل دسترسی است، استفاده کنید.
mysql> CREATE USER 'ZoipVPS'@'%' IDENTIFIED BY 'password_here';
همه چیز آماده است. شما به کاربر مورد نظر خود دسترسی به یک یا چند پایگاه داده را اعطا کردید تا بتواند با استفاده از اعتبارنامههای حساب، از راه دور به پایگاه داده دسترسی پیدا کند. یک بار که تمام مراحل این آموزش را پشت سر گذاشتید، فعال کردن اتصال راه دور به MySQL باید به درستی تکمیل شده باشد.
نتیجهگیری
در این مقاله، شما یاد گرفتید چگونه اتصال راه دور به MySQL در لینوکس را فعال کنید. در حالی که MySQL به عنوان محبوبترین سرور پایگاه داده متنباز فقط برای اتصالات ورودی در localhost گوش میدهد، شما باید مراحل توضیح داده شده را انجام دهید تا بتوانید اتصالات راه دور به سرور MySQL خود را فعال کنید. همانطور که مرور کردید، ابتدا سرور MySQL را برای گوش دادن به تمام یا یک رابط خاص پیکربندی کردیم. پس از باز کردن پورت MySQL در فایروال خود، با اعطای دسترسی به کاربر راه دور، این فرآیند را به پایان رساندید. اگر مراحل بالا را به درستی دنبال کنید، میتوانید به راحتی به هدف این راهنما دست یابید.