چگونه به اتصال از راه دور به MySQL اجازه دهیم

اگر با یک پایگاه داده MySQL(MySQL database) کار می کنید، از چالش هایی که برای ایمن نگه داشتن پایگاه داده خود با آن مواجه هستید، آگاه هستید. از تلاش‌های هک پایگاه داده با استفاده از تزریق SQL گرفته تا حملات brute force، حفظ امنیت داده‌های شما دشوار است، به خصوص اگر از راه دور با پایگاه داده کار می‌کنید.

راه‌هایی برای پیکربندی یک سرور SQL برای اجازه اتصال از راه دور وجود دارد، اما باید مراقب باشید، زیرا اجازه دادن به اتصال از راه دور در سرور MySQL می‌تواند پایگاه داده شما را به یک هدف آسان برای هکرها تبدیل کند. اگر می خواهید به یک پایگاه داده MySQL اتصالات ایمن و از راه دور اجازه دهید ، در اینجا چیزی است که باید بدانید.

قبل از اینکه شروع کنی(Before You Begin)

قبل از اینکه هر گونه تغییری در پایگاه داده MySQL خود ایجاد کنید ، مهم است که از پایگاه داده خود نسخه پشتیبان تهیه کنید(backup your database) ، به خصوص اگر روی یک سرور تولیدی کار می کنید (سرور در حال استفاده فعال). هر تغییری که در پایگاه داده خود یا سروری که آن را میزبانی می‌کند، می‌تواند منجر به از دست دادن اطلاعات جدی در صورت بروز مشکل شود.

همچنین ممکن است متوجه شوید که تغییرات در اتصالات سرور شما ممکن است مانع از دسترسی شما به آن شود. اگر این اتفاق افتاد، ممکن است لازم باشد برای پشتیبانی بیشتر با مدیر سرور مشورت کنید. یک ایده خوب این است که هر تغییری را روی یک سرور MySQL که به صورت محلی اجرا می‌شود، آزمایش کنید تا قبل از امتحان از راه دور، بررسی کنید که آیا تغییرات شما کار می‌کنند یا خیر.

همچنین این احتمال وجود دارد که اگر در حال ایجاد تغییرات در یک سرور راه دور هستید، به یک راه امن برای اتصال و ایجاد تغییرات نیاز دارید. SSH (Secure Shell) اغلب بهترین راه برای انجام این کار است، زیرا به شما امکان می دهد به سرور راه دور خود متصل شوید. همچنین می‌توانید از SSH برای اتصال به سرورهای شبکه محلی خود، مانند سرورهایی که روی Raspberry Pi میزبانی می‌شوند،(hosted on a Raspberry Pi) استفاده کنید.

این راهنما شما را از طریق مراحل پیکربندی MySQL برای اجازه دادن به اتصالات از راه دور راهنمایی می کند، اما ابتدا باید اطمینان حاصل کنید که دسترسی مستقیم یا از راه دور به سرور میزبان MySQL سرور خود دارید.

فرض کنید از طریق (Suppose)SSH (مثلا) به سرور خود از راه دور دسترسی ندارید . در این صورت، نمی‌توانید پایگاه داده MySQL خود را به گونه‌ای پیکربندی کنید که اتصالات از راه دور را مستقیماً مجاز کند، مگر اینکه حساب ریشه mySQL شما قبلاً به اتصالات راه دور اجازه دهد. بنابراین، قبل از اینکه بتوانید ادامه دهید، ابتدا باید این ارتباط را برقرار کنید.

در حال ویرایش فایل پیکربندی MySQL(Editing Your MySQL Configuration File)

اولین قدم در پیکربندی MySQL برای اجازه دادن به اتصالات از راه دور، ویرایش فایل پیکربندی MySQL است. (MySQL)در این مرحله، این راهنما فرض می‌کند که قبلاً به سرور، رایانه شخصی یا مکی(Mac) که پایگاه داده mySQL شما را از راه دور میزبانی می‌کند متصل شده‌اید و به کنسول دسترسی دارید. 

از طرف دیگر، می توانید یک سرور محلی MySQL را با استفاده از یک ترمینال باز در مک(Mac) یا لینوکس(Linux) یا یک ویرایشگر متن در ویندوز(Windows) پیکربندی کنید .

  1. برای شروع، از ویرایشگر متن کنسول دلخواه خود برای ویرایش فایل پایگاه داده MySQL خود استفاده کنید. در لینوکس(Linux) ، sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf را در ترمینال یا پنجره SSH تایپ کنید تا این فایل را با استفاده از ویرایشگر نانو(nano) ویرایش کنید (با فرض اینکه پایگاه داده MySQL شما در مکان پیش فرض قرار دارد)

  1. اگر از ویندوز(Windows) استفاده می کنید ، File Explorer را باز کنید و به پوشه حاوی نصب MySQL خود دسترسی پیدا کنید (مثلاً C:/Program Files/MySQL/MySQL Server 8.0 ). فایل my.ini(my.ini) را با استفاده از ویرایشگر متن پیش‌فرض خود (مثلاً Notepad ) با دوبار کلیک کردن روی ورودی باز کنید. اگر آنجا نیست، ابتدا فایل را ایجاد کنید(create the file first) .

  1. در مک(Mac) ، یک پنجره ترمینال باز کنید و sudo nano /usr/local/etc/my.cnf را تایپ کنید. اگر MySQL را (MySQL)با استفاده از homebrew(using homebrew) نصب کرده باشید ، این فایل پیکربندی پیش‌فرض برای MySQL است.

مکان های ذکر شده در بالا مکان های پیش فرض فایل های پیکربندی MySQL هستند. (MySQL)اگر این دستورات کار نمی کنند، باید فایل های مربوطه ( my.cnf ، mysqld.cnf یا my.ini ) را به صورت دستی جستجو کنید تا مسیر فایل مربوطه را پیدا کنید.

تنظیم یک محدوده IP با آدرس ایمن(Setting a Safe Bind-Address IP Range)

  1. هنگامی که فایل پیکربندی MySQL را برای سرور خود باز کردید، از کلید پیکان صفحه کلید خود برای دسترسی به بخش bind-address فایل استفاده کنید. این محدوده IP اتصالات به پایگاه داده شما را محدود می کند، که معمولاً به گونه ای تنظیم می شود که فقط از دستگاه یا سرور محلی با استفاده از 127.0.0.1 اجازه اتصالات را بدهد .

  1. اگر می‌خواهید پایگاه داده MySQL خود را به گونه‌ای پیکربندی کنید که از طریق دستگاه‌هایی که از اتصال اینترنتی فعلی شما استفاده می‌کنند اجازه اتصالات را بدهد ، ابتدا آدرس IP عمومی خود را پیدا کنید(find your public IP address) ، سپس آن آدرس IP را جایگزین 127.0.0.1 کنید. از طرف دیگر، آن را با یک آدرس IP برای دستگاه یا سروری که می‌خواهید اجازه اتصال از آن را بدهید، جایگزین کنید.

  1. در برخی شرایط، ممکن است بخواهید به همه(all) اتصالات راه دور به پایگاه داده MySQL اجازه دهید . این خطر شدید دارد(extreme risk) و نباید در سرور تولید استفاده شود. با این حال، اگر می خواهید اجازه دهید، 127.0.0.1 را(127.0.0.1) با 0.0.0.0 جایگزین کنید.

  1. مقدار پورت(port ) را در قسمت Basic Settings یادداشت کنید . این مورد در بخش بعدی الزامی خواهد بود. اگر قابل مشاهده نباشد، از مقدار پیش فرض استفاده می شود که پورت 3306 است. شما می توانید پورت خود را با تایپ port = xxxx در یک خط جدید اضافه کنید و مقدار پورت مناسب را جایگزین xxxx کنید.(xxxx)

  1. هنگامی که آدرس bind(bind-address ) را در فایل پیکربندی MySQL خود پیکربندی کردید، فایل را ذخیره کنید. اگر از لینوکس استفاده(Linux) می کنید، Ctrl + O و Ctrl + X را برای انجام این کار انتخاب کنید. در مک، Command + O و Command + X را انتخاب کنید. کاربران ویندوز می توانند با انتخاب File > Save ذخیره(Save) کنند.

  1. در مرحله بعد، کاربران لینوکس(Linux) و مک(Mac) می توانند MySQL را با تایپ کردن mysql.server stop &&mysql.server start یا mysql.server restart مجددا راه اندازی(mysql.server restart) کنند. ممکن است لازم باشد دستور را با استفاده از sudo(using sudo) بالا ببرید (به عنوان مثال sudo mysql.server restart ) و از مسیر مناسب برای فایل mysql.server (مثلا /usr/local/bin/mysql.server) استفاده /usr/local/bin/mysql.server .

  1.  اگر دستور بالا کار نکرد، به جای آن، سرویس sudo mysql restart(sudo service mysql restart ) را امتحان کنید .

  1. برای راه اندازی مجدد MySQL در ویندوز(Windows) ، با کلیک راست روی منوی Start و انتخاب Windows PowerShell (Admin) یک پنجره (Windows PowerShell (Admin))PowerShell جدید باز کنید . در پنجره PowerShell، net stop mysql80 و سپس net start mysql80 را(net start mysql80) تایپ کنید و نام سرویس صحیح را در رایانه شخصی خود جایگزین mysql80 کنید.(mysql80)

اگر از نام صحیح سرویس در ویندوز مطمئن نیستید، (Windows)net start را تایپ کنید تا آن را پیدا کنید. اگر نمی توانید پیکربندی خود را بارگیری مجدد کنید، سرور خود را مجددا راه اندازی کنید و به جای آن MySQL را به صورت دستی بارگیری کنید (در صورت لزوم).

پیکربندی فایروال های خود(Configuring Your Firewalls)

در این مرحله، پایگاه داده MySQL شما باید اتصالات راه دور از دستگاه‌ها را با استفاده از آدرس IP که به عنوان مقدار bind-address در فایل پیکربندی MySQL خود تنظیم کرده‌اید (یا اگر به جای آن این مقدار را روی 0.0.0.0 تنظیم کنید، از همه دستگاه‌ها ) اجازه دهد. با این حال، اتصالات همچنان توسط دستگاه یا فایروال شبکه(device or network firewall) شما مسدود خواهد شد .

اکثر سرورها و رایانه های شخصی از فایروال برای مسدود کردن اتصالات استفاده می کنند مگر اینکه دسترسی به یک پورت خاص داده شود. بسته به اینکه MySQL را در ویندوز(Windows) یا لینوکس(Linux) اجرا می‌کنید، مراحل پیکربندی آن متفاوت است. فایروال های مک(Mac) به طور پیش فرض غیرفعال هستند، بنابراین نیازی به انجام هیچ مرحله اضافی در اینجا ندارید.

فایروال های لینوکس را پیکربندی کنید(Configure Linux Firewalls)

بسیاری از سرورهای لینوکس از iptables به عنوان ابزار فایروال پیش فرض استفاده می کنند. با دنبال کردن مراحل زیر می توانید آن را پیکربندی کنید.

  1. یک ترمینال یا اتصال SSH را باز کنید و (SSH)sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPT را تایپ(sudo iptables -A INPUT -p tcp -s X.X.X.X –dport YYYY -j ACCEPT) کنید. XXXX را با آدرس IP دستگاهی که می‌خواهید به اتصالات MySQL اجازه دهید جایگزین کنید ،(from) و YYYY را با مقدار پورت منطبق از فایل پیکربندی MySQL خود جایگزین کنید (مثلاً 3306 ).

  1. با این کار فایروال به طور موقت پیکربندی می شود. اگر از سرور لینوکس(Linux) مبتنی بر دبیان یا اوبونتو استفاده می‌کنید ، این تغییر را با تایپ sudo netfilter-persistent save و sudo netfilter-persistent reload در ترمینال یا پنجره SSH دائمی کنید.

اگر iptables ابزار فایروال پیش فرض برای توزیع لینوکس(Linux) شما نیست، برای اطلاعات بیشتر باید به دفترچه راهنمای کاربر توزیع خود مراجعه کنید. اگر بسته‌های خاصی (مانند netfilter-persistent ) در دسترس نیستند، از ابزار مخزن نرم‌افزار توزیع خود برای نصب آن استفاده کنید (مثلا sudo apt install netfilter-persistent ).

فایروال های ویندوز را پیکربندی کنید(Configure Windows Firewalls)

اگر از رایانه شخصی یا سرور ویندوزی برای میزبانی پایگاه داده خود استفاده می کنید، می توانید فایروال خود را با استفاده از این مراحل پیکربندی کنید:

  1. (Right-click)روی منوی Start کلیک راست کرده و Run را انتخاب کنید .

  1. در کادر Run ، wf.msc را تایپ کرده و OK را انتخاب کنید .

  1. در پنجره Windows Defender(Windows Defender) ، Inbound Rules > New Rule را انتخاب کنید .

  1. در پنجره New Inbound Rule Wizard ، Port > Next را انتخاب کنید .

  1. در منوی بعدی، TCP را از میان گزینه‌ها انتخاب کنید، 3306 را تایپ کنید (یا هر مقدار پورتی که در فایل پیکربندی MySQL شما فهرست شده است)، سپس (MySQL)Next را انتخاب کنید .

  1. در منوی Action ، گزینه پیش‌فرض را روی Allow the connection enabled بگذارید، سپس Next را انتخاب کنید .

  1. تأیید کنید که می‌خواهید این قانون برای همه انواع شبکه اعمال شود، سپس Next را انتخاب کنید . 

  1. یک نام توصیفی برای قانون (به عنوان مثال MySQL ) در پورت ارائه شده تایپ کنید، سپس Finish را انتخاب کنید تا آن را به لیست قوانین فایروال خود اضافه کنید.

اگر در اتصال مشکل دارید، این مراحل بالا را تکرار کنید، مطمئن شوید که یک قانون خروجی(outbound rule ) جدید در تنظیمات فایروال خود با استفاده از همان جزئیات (پورت 3306 و غیره) ایجاد کرده اید. همچنین ممکن است لازم باشد روتر شبکه محلی خود را پیکربندی کنید تا پورت های مسدود شده لازم را باز کند(open the necessary blocked ports) تا اتصالات ورودی و خروجی به پایگاه داده شما امکان پذیر باشد. 

اتصال به سرور از راه دور با استفاده از MySQL(Connecting to a Remote Server Using MySQL)

پس از پیکربندی پایگاه داده MySQL برای اجازه دادن به اتصالات از راه دور، باید در واقع یک اتصال به آن برقرار کنید. می توانید این کار را با استفاده از دستور mysql ( mysql.exe در ویندوز(Windows) ) از یک ترمینال یا پنجره PowerShell انجام دهید.(PowerShell)

اگر از ویندوز(Windows) استفاده می کنید، قبل از شروع باید مطمئن شوید که MySQL به صورت محلی نصب شده است(MySQL is installed locally) . کاربران مک(Mac) می توانند MySQL را (MySQL) با استفاده از homebrew(using homebrew) از ترمینال نصب کنند ( brew install mysql )، در حالی که کاربران لینوکس(Linux) می توانند از مخزن برنامه محلی خود (به عنوان مثال sudo apt install mysql ) برای نصب بسته های لازم استفاده کنند.

اتصال به MySQL در لینوکس یا مک(Connecting to MySQL on Linux or Mac)

  1. برای اتصال به سرور MySQL راه دور خود در (MySQL)Mac یا Linux ، یک پنجره ترمینال جدید باز کنید و mysql -u username -h XXXX:XXXX -p را تایپ کنید. آدرس IP سرور راه دور و شماره پورت خود (به عنوان مثال 100.200.100.200:3306 ) و نام کاربری(username) را با نام کاربری MySQL خود جایگزین XXXX:XXXX کنید.(X.X.X.X:XXXX )

  1. وقتی از شما خواسته شد، رمز عبور خود را تأیید کنید. اگر اتصال موفقیت آمیز باشد، یک پیام موفقیت آمیز در ترمینال ظاهر می شود.

اتصال به MySQL در ویندوز(Connecting to MySQL on Windows)

  1. برای اتصال به یک سرور MySQL راه دور در (MySQL)ویندوز(Windows) ، با کلیک راست روی منوی Start و انتخاب Windows PowerShell (Admin) یک پنجره (Windows PowerShell (Admin))PowerShell جدید باز کنید .

  1. در پنجره جدید PowerShell، cd “C:\Program Files\MySQL\MySQL Workbench 8.0\ " را تایپ کنید تا پوشه صحیح را وارد کنید و این دایرکتوری را با دایرکتوری نصب صحیح در رایانه شخصی خود جایگزین کنید. به عنوان مثال، اگر نسخه MySQL شما 8.0.1 است، به جای آن از پوشه MySQL Workbench 8.0.1 استفاده کنید.(MySQL Workbench 8.0.1)

  1. از آنجا، .\mysql.exe -u username -h X.X.X.X:XXXX -p را تایپ کنید . آدرس IP سرور راه دور و شماره پورت خود (به عنوان مثال 100.200.100.200:3306 ) و نام کاربری(username) را با نام کاربری MySQL که امکان دسترسی از راه دور (مانند root ) را فراهم می کند، جایگزین XXXX:XXXX کنید. (X.X.X.X:XXXX )هر دستورالعمل اضافی روی صفحه را دنبال کنید .(Follow)
  2. هنگامی که از شما خواسته شد رمز عبور خود را برای تکمیل فرآیند ورود و دسترسی از راه دور به پایگاه داده MySQL خود وارد کنید.(MySQL)

اگر این کار نکرد، با استفاده از این مراحل و با استفاده از آرگومان -h localhost ، با استفاده از SSH (یا به طور مستقیم به آن دسترسی داشته باشید) به سرور یا رایانه شخصی که سرور (SSH)MySQL شما را میزبانی می کند متصل شوید. (MySQL)سپس می توانید با دنبال کردن مراحل زیر یک حساب کاربری مناسب ایجاد کنید.

امکان دسترسی کاربر از راه دور به پایگاه داده MySQL(Allowing Remote User Access to a MySQL Database)

تا این مرحله، باید بتوانید از راه دور با استفاده از حساب کاربری ریشه سرور خود یا حساب کاربری دیگری با امتیازات بالا به سرور MySQL خود متصل شوید. (MySQL)از آنجایی که این سطح دسترسی ناامن است، ممکن است ترجیح دهید یک حساب کاربری محدودتر برای دسترسی به پایگاه داده MySQL خود ایجاد کنید .

این حساب دسترسی محدودی به سرور MySQL شما خواهد داشت و به آن اجازه می دهد فقط با پایگاه های داده انتخاب شده تعامل داشته باشد. نمی‌تواند تغییرات جدی‌تری مانند دسترسی به سایر داده‌های پایگاه داده، ایجاد حساب‌های کاربری جدید و غیره ایجاد کند. 

شما باید توانایی ورود به سرور MySQL خود را از راه دور داشته باشید. (MySQL)اگر نمی توانید از راه دور از حساب ریشه خود استفاده کنید، باید با استفاده از دستور mysql از طریق یک اتصال SSH راه دور یا با دسترسی مستقیم به رایانه شخصی یا سرور میزبان سرور، به پوسته سرور خود دسترسی پیدا کنید.

  1. در پوسته MySQL راه دور خود (با استفاده از ابزار (MySQL)mysqlCREATE USER “username”@”x.x.x.x” IDENTIFIED BY “password”; و Enter را انتخاب کنید . نام کاربری(username ) را با نام کاربری که می خواهید ایجاد کنید، xxxx را با آدرس IP که می خواهید از آن متصل شوید و رمز عبور را(password) با یک رمز عبور مناسب جایگزین کنید .

  1. باید به حساب جدید خود مجوزهای لازم را بدهید. برای این کار، GRANT ALL ON databasename.* TO username@”x.x.x.x”; و نام پایگاه داده، نام کاربری(databasename, username, ) و xxxx  را با جزئیات صحیح جایگزین کنید. در صورت تمایل، نام پایگاه داده(databasename) را با * جایگزین کنید تا به همه پایگاه های داده دسترسی داشته باشد. 

با اعطای دسترسی، از مراحل بخش بالا برای اتصال از راه دور با استفاده از حساب جدید خود به سرور خود استفاده کنید (مثلاً mysql -u username -h XXXX:XXXX -p ).

ایمن سازی داده های پایگاه داده شما(Securing Your Database Data)

چه با MySQL یا نوع دیگری از پایگاه داده SQL کار می کنید، مهم است که اتصالات خود را ایمن نگه دارید تا امنیت داده های خود را حفظ کنید. یک راه خوب برای انجام این کار این است که به جای تکیه بر رمزهای عبور قدیمی (و به راحتی قابل حدس زدن) کلیدهای SSH را برای دسترسی از راه دور به سرور خود تولید کنید.(generate SSH keys for remote access)

اگر نگران از دست دادن داده ها هستید، می توانید به راحتی از پایگاه داده خود به(back up your database) صورت آنلاین نسخه پشتیبان تهیه کنید. اکثر پایگاه‌های داده با استفاده از سرورهای لینوکس اجرا می‌شوند—شما می‌توانید (Linux)به راحتی پشتیبان‌گیری از فایل لینوکس را خودکار کنید(automate a Linux file backup easily) . اگر MySQL را روی ویندوز اجرا(Windows) می‌کنید، می‌توانید یک سیستم پشتیبان‌گیری خودکار مشابه برای ویندوز(automatic backup system for Windows) راه‌اندازی کنید که به شما امکان می‌دهد در مواقع اضطراری اطلاعات خود را بازیابی کنید.



About the author

من یک متخصص کامپیوتر هستم که تجربه کار با نرم افزارهای Microsoft Office از جمله Excel و PowerPoint را دارم. من همچنین با کروم که یک مرورگر متعلق به گوگل است، تجربه دارم. مهارت های من شامل ارتباط نوشتاری و کلامی عالی، حل مسئله و تفکر انتقادی است.



Related posts