عند استخدام MySQL، لا يمكن تجاهل المشكلات الأمنية. فيما يلي 23 ملاحظة تطالب بها MySQL:
1. إذا كان الاتصال بين العميل والخادم يحتاج إلى الامتداد والمرور عبر شبكة غير موثوقة، فأنت بحاجة إلى استخدام نفق SSH لتشفير اتصال الاتصال.
2. استخدم عبارة تعيين كلمة المرور لتغيير كلمة مرور المستخدم في ثلاث خطوات، قم أولاً بتسجيل الدخول إلى نظام قاعدة البيانات باستخدام "mysql -u root"، ثم "mysql> تحديث mysql.user setpassword('newpwd')" ، وأخيرًا، سيتم تنفيذ امتيازات "التدفق".
3. تشمل الهجمات التي يجب الحماية منها مكافحة التنصت، والتلاعب، وإعادة التشغيل، ورفض الخدمة، وما إلى ذلك، والتي لا تتضمن التوفر والتسامح مع الأخطاء. يتم إكمال جميع الاتصالات والاستعلامات والعمليات الأخرى باستخدام إجراءات الأمان المستندة إلى ACL (قائمة التحكم في الوصول). هناك بعض الدعم لاتصالات SSL أيضًا.
4. لا يُسمح لأي مستخدم آخر، باستثناء المستخدم الجذر، بالوصول إلى جدول المستخدم في قاعدة البيانات الرئيسية mysql؛
بمجرد تسرب كلمة مرور المستخدم المشفرة المخزنة في جدول المستخدم، يمكن للآخرين استخدام قاعدة البيانات المقابلة مع اسم المستخدم/كلمة المرور حسب الرغبة. 5.
استخدم عبارات المنح والإلغاء للتحكم في وصول المستخدم.
6. لا تستخدم كلمات مرور نصية عادية، ولكن استخدم وظائف التجزئة أحادية الاتجاه مثل md5() وsha1() لتعيين كلمات المرور
؛ في أحرف القاموس ككلمة المرور؛
8. استخدم جدار الحماية لإزالة 50% من المخاطر الخارجية، واترك نظام قاعدة البيانات يعمل خلف جدار الحماية، أو ضعه في منطقة DMZ
9. استخدم nmap لمسح المنفذ 3306 من الإنترنت أو استخدم telnet server_host لا يمكن أن يسمح اختبار الطريقة 3306 بالوصول إلى منفذ TCP 3306 لخادم قاعدة البيانات من شبكة غير موثوق بها، لذلك يجب إجراء الإعدادات على جدار الحماية أو جهاز التوجيه
10. لمنع تمرير المعلمات غير القانونية بشكل ضار ، مثل حيث ID=234، وغيرها ولكن إدخال حيث ID=234 أو 1=1 يؤدي إلى عرض الكل، لذا استخدم '' أو "" لاستخدام السلاسل في نموذج الويب، وأضف %22 إلى عنوان URL الديناميكي لتمثيله علامات الاقتباس المزدوجة، %23 تمثل علامة الجنيه، و%27 تمثل علامة اقتباس واحدة، ومن الخطر جدًا تمرير القيم غير المحددة إلى قاعدة بيانات mysql
11.
تحقق من الحجم عند تمرير البيانات إلى mysql؛
للاتصال بقاعدة البيانات، يجب استخدام حسابات المستخدمين العامة، وفتح عدد قليل فقط من الحسابات الضرورية. يتم منح الأذونات للمستخدم؛
13. استخدم وظائف "حرف الهروب" المحددة في واجهات البرمجة المختلفة (C C++ PHP Perl Java JDBC، وما إلى ذلك)؛
عند استخدام قاعدة بيانات mysql على الإنترنت، تأكد من نقل بيانات نصية أقل واستخدام SSL وSSH يتم إرسال البيانات المشفرة؛
14. تعلم كيفية استخدام أدوات tcpdump والسلاسل للتحقق من أمان البيانات المرسلة، مثل tcpdump -l. -i eth0 -w -src أو منفذ dst 3306 سلاسل. ابدأ خدمة قاعدة بيانات mysql كمستخدم عادي
15. لا تستخدم رمز الارتباط للجدول، حدد المعلمة --skip-symbolic-links
16. تأكد من أن المستخدم الذي يبدأ خدمة قاعدة البيانات هو الوحيد الموجود في دليل mysql يمكنه قراءة وقراءة الملفات؛
17. لا يُسمح بمنح أذونات العملية أو الفائقة للمستخدمين غير الإداريين، ويمكن لقائمة عمليات mysqladmin إدراج نص الاستعلام الذي تم تنفيذه حاليًا؛ حالة معلمات تشغيل الخادم والتحكم في قواعد بيانات النسخ والنسخ
18. لا يتم منح أذونات الملف للمستخدمين بخلاف المسؤولين لمنع مشكلة تحميل البيانات '/etc/passwd' في الجدول ثم استخدام التحديد للعرض. 19.
إذا كنت لا تثق في خدمات شركة خدمة DNS، يمكنك فقط تعيين عناوين IP الرقمية في جدول أذونات الاسم
20. استخدم متغير max_user_connections لتمكين عملية خدمة mysqld للحد من عدد الاتصالات؛ حساب محدد
21. يدعم بيان المنحة أيضًا خيارات التحكم في الموارد
22. بدء تشغيل مفتاح خيار الأمان لعملية خدمة mysqld، --local-infile=0 أو 1. إذا كان 0، فلن يتمكن برنامج العميل من استخدام التحميل المحلي. data. مثال على منح الإدراج (المستخدم) على mysql.user إلى 'user_name'@'host_name' ؛ امتيازات تدفق mysqladmin أو إعادة تحميل mysqladmin لتمكين التحكم في الوصول بشكل افتراضي، يكون بيان قواعد البيانات show مفتوحًا لجميع المستخدمين، ويمكنك استخدام --skip- show-databases لإيقاف تشغيله.
23. عند مواجهة الخطأ 1045 (28000) تم رفض الوصول للمستخدم 'root'@'localhost' (باستخدام كلمة المرور: NO)، تحتاج إلى إعادة تعيين كلمة المرور. الطريقة المحددة هي: البدء أولاً بـ --skip-grant - معلمة الجداول mysqld، ثم قم بتنفيذ mysql -u root mysql,mysql>تحديث كلمة مرور مجموعة المستخدم=password('newpassword') حيث user='root';mysql>Flush امتيازات;، وأخيرًا أعد تشغيل mysql.