السماح بالوصول عن بُعد إلى ماي إس كيو إل

تبدأ العديد من مواقع الويب والتطبيقات مع تشغيل خادم الويب وقاعدة البيانات الخلفية على نفس الجهاز. من ناحية أخرى، يمكن أن يصبح الإعداد مثل هذا معقدًا وصعبًا للتوسع بمرور الوقت. الحل هو فصل هذه الوظائف وإنشاء قاعدة بيانات عن بعد. السماح للخادم وقاعدة البيانات بالنمو بشكل مستقل على أجهزة كل منهما.

لتمكين هذا، افتح ملفك mysqld.cnf:

$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

او

$ sudo nano /etc/mysql/my.cnf

او

$ sudo nano /etc/my.cnf

ابحث عن الخط الذي يبدأ به bind-address التوجيه. سيظهر على النحو التالي:

# If MySQL is running as a replication slave, this should be
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmpdir
# tmpdir                = /tmp
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1
mysqlx-bind-address     = 127.0.0.1

تم ضبط هذه القيمة على 127.0.0.1 افتراضيًا، مما يعني أن الخادم سيبحث فقط عن الاتصالات المحلية. يجب تعديل هذا التوجيه للإشارة إلى عنوان IP خارجي. لأغراض استكشاف الأخطاء، يمكنك تعيين هذا التوجيه على عنوان IP بطاقة البدل، مثل * ، : : أو 0.0.0.0:

# If MySQL is running as a replication slave, this should be
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmpdir
# tmpdir                = /tmp
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 0.0.0.0

احفظ وأغلق الملف بعد تغيير هذا المعامل.

ثم أعد تشغيل خدمة MySQL لتطبيق التغييرات التي تم إجراؤها على mysqld.cnf:

$ sudo systemctl restart mysql

إذا كان لديك بالفعل حساب مستخدم MySQL تنوي استخدامه للاتصال بقاعدة البيانات من مضيف بعيد، فيجب عليك إعادة تشكيل هذا الحساب للاتصال من الخادم البعيد بدلاً من localhost. افتح عميل MySQL باعتباره جذر مستخدم MySQL أو حساب مستخدم آخر مميز:

$ sudo mysql

إذا كان مستخدم root استخدام كلمة مرور:

$ mysql -u root -p

مع الأمر التالي، يمكننا إنشاء حساب مستخدم جديد سيتصل فقط من المضيف عن بعد:

mysql> CREATE USER 'bob'@'r_server_ip' IDENTIFIED BY 'password';

أو لتغيير مضيف المستخدم الحالي، يمكنك استخدام MySQL’s RENAME USER أمر. قم بتشغيل الأمر التالي:

mysql> RENAME USER 'bob'@'localhost' TO 'bob'@'r_server_ip';

بعد ذلك ، من أجل احتياجاتك الخاصة ، قم بتعيين الحقوق ذات الصلة للمستخدم الجديد. يسمح المثال التالي للمستخدم بإنشاء قواعد بيانات وجداول ومستخدمين وتعديلها وإخراجها ، بالإضافة إلى إدراج البيانات وتحديثها وحذفها من أي جدول على الخادم. كما يسمح للمستخدم بالاستعلام عن البيانات باستخدام SELECT وإنشاء مفاتيح خارجية باستخدام الكلمة الأساسية REFERENCES وإجراء عمليات FLUSH باستخدام إذن RELOAD. ومع ذلك ، يجب عليك فقط تزويد الأشخاص بالوصول الذي يحتاجونه ، لذلك لا تتردد في تغيير امتيازات المستخدم الخاصة بك كما هو مطلوب.

mysql> GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'bob'@'r_server_ip' WITH GRANT OPTION;

بعد ذلك، من الجيد التنفيذ FLUSH PRIVILEGES أمر. سيصدر هذا أي ذاكرة مخبأة بواسطة الخادم نتيجة للذاكرة السابقة CREATE USER و GRANT البيانات:

mysql> FLUSH PRIVILEGES;

يمكن بعد ذلك إغلاق عميل MySQL:

mysql> exit;

أخيرًا، إذا كان لديك جدار حماية مثبت على خادم قاعدة البيانات الخاص بك، فيجب عليك فتح منفذ 3306 – المنفذ الافتراضي لـ MySQL – لتمكين الاتصال بـ MySQL.

إذا كنت ترغب فقط في الاتصال بخادم قاعدة البيانات من جهاز واحد، فاستخدم الأمر التالي لمنح هذا الجهاز ترخيصًا حصريًا للاتصال بقاعدة البيانات عن بُعد. استبدل r_server_ip بعنوان IP الحقيقي للكمبيوتر الذي تريد الاتصال به:

أو لتمكين أي شخص من الوصول إلى قاعدة بيانات MySQL الخاصة بك قيد الاستخدام:

UFW

$ sudo ufw allow from r_server_ip to any port 3306

Iptables

$ sudo iptables -A INPUT -p tcp -s r_server_ip --dport 3306 -j ACCEPT
$ sudo iptables-save

firewalld

$ sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp

بعد ذلك، حاول الوصول عن بعد إلى قاعدة بياناتك من آلة أخرى:

ملاحظة: إذا قمت بتكوين جدار الحماية الخاص بك لقبول الاتصالات فقط من عنوان IP واحد، فيجب عليك محاولة الوصول إلى قاعدة البيانات باستخدام الجهاز المرتبط بهذا العنوان.
$ mysql -u user -h db_server_ip -p

إذا كان بإمكانك الوصول إلى قاعدة البيانات الخاصة بك، فإنه يوضح أن توجيه عنوان الارتباط في ملف التكوين الخاص بك كان مصدر المشكلة. ومع ذلك، فإن تعيين عنوان الارتباط على 0.0.0.0 غير آمن لأنه يسمح بالاتصالات إلى الخادم الخاص بك من أي عنوان IP.

LEAVE A COMMENT