Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

गैलेरा क्लस्टर को कैसे सुरक्षित करें - 8 टिप्स

एक वितरित डेटाबेस सिस्टम के रूप में, गैलेरा क्लस्टर को केंद्रीकृत डेटाबेस की तुलना में अतिरिक्त सुरक्षा उपायों की आवश्यकता होती है। डेटा कई सर्वरों या शायद डेटासेंटर में भी वितरित किया जाता है। नोड्स में महत्वपूर्ण डेटा संचार होने के साथ, यदि उचित सुरक्षा उपाय नहीं किए गए तो महत्वपूर्ण जोखिम हो सकता है।

इस ब्लॉग पोस्ट में, हम अपने गैलेरा क्लस्टर को सुरक्षित करने के कुछ सुझावों पर गौर करने जा रहे हैं। ध्यान दें कि यह ब्लॉग हमारे पिछले ब्लॉग पोस्ट - ClusterControl के साथ अपने ओपन सोर्स डेटाबेस को कैसे सुरक्षित करें पर आधारित है।

फ़ायरवॉल और सुरक्षा समूह

गैलेरा क्लस्टर के लिए निम्नलिखित पोर्ट बहुत महत्वपूर्ण हैं:

  • 3306 - MySQL
  • 4567 - गैलेरा संचार और प्रतिकृति
  • 4568 - गैलेरा IST
  • 4444 - गैलेरा एसएसटी

बाहरी नेटवर्क से, केवल MySQL पोर्ट 3306 तक पहुंच खोलने की अनुशंसा की जाती है। अन्य तीन बंदरगाहों को बाहरी नेटवर्क से बंद किया जा सकता है, और केवल उन्हें गैलेरा नोड्स के बीच आंतरिक पहुंच की अनुमति देता है। यदि आप गैलेरा नोड्स के सामने बैठे रिवर्स प्रॉक्सी चला रहे हैं, उदाहरण के लिए HAProxy, तो आप सार्वजनिक पहुंच से MySQL पोर्ट को लॉक कर सकते हैं। यह भी सुनिश्चित करें कि HAProxy मॉनिटरिंग स्क्रिप्ट के लिए मॉनिटरिंग पोर्ट खोला गया है। गैलेरा नोड पर डिफ़ॉल्ट पोर्ट 9200 है।

निम्नलिखित आरेख तीन-नोड गैलेरा क्लस्टर पर हमारे उदाहरण सेटअप को दिखाता है, जिसमें एक HAProxy अपने संबंधित पोर्ट के साथ सार्वजनिक नेटवर्क का सामना कर रहा है:

उपरोक्त आरेख के आधार पर, डेटाबेस नोड्स के लिए iptables कमांड हैं:

$ iptables -A INPUT -p tcp -s 10.0.0.0/24 --dport 3306 -j ACCEPT
$ iptables -A INPUT -p tcp -s 10.0.0.0/24 --dport 4444 -j ACCEPT
$ iptables -A INPUT -p tcp -s 10.0.0.0/24 --dports 4567:4568 -j ACCEPT
$ iptables -A INPUT -p tcp -s 10.0.0.0/24 --dport 9200 -j ACCEPT

लोड बैलेंसर पर रहते हुए:

$ iptables -A INPUT -p tcp --dport 3307 -j ACCEPT

अपने फ़ायरवॉल नियमों को सभी को अस्वीकार करने के साथ समाप्त करना सुनिश्चित करें, इसलिए अपवाद नियमों में परिभाषित केवल ट्रैफ़िक की अनुमति है। आप अपनी सुरक्षा नीति का पालन करने के लिए सख्त हो सकते हैं और आदेशों का विस्तार कर सकते हैं - उदाहरण के लिए, नेटवर्क इंटरफ़ेस, गंतव्य पता, स्रोत पता, कनेक्शन स्थिति और क्या नहीं जोड़कर।

MySQL क्लाइंट-सर्वर एन्क्रिप्शन

MySQL क्लाइंट और सर्वर के बीच एन्क्रिप्शन का समर्थन करता है। सबसे पहले हमें सर्टिफिकेट जेनरेट करना होगा। एक बार कॉन्फ़िगर करने के बाद, आप एक MySQL सर्वर से एन्क्रिप्शन से कनेक्ट करने के लिए कुछ विकल्पों को निर्दिष्ट करने के लिए उपयोगकर्ता खातों को लागू कर सकते हैं।

चरणों के लिए आपको निम्न करने की आवश्यकता है:

  1. प्रमाणपत्र प्राधिकरण के लिए एक कुंजी बनाएं (ca-key.pem)
  2. स्व-हस्ताक्षरित CA प्रमाणपत्र (ca-cert.pem) जेनरेट करें
  3. सर्वर प्रमाणपत्र के लिए एक कुंजी बनाएं (server-key.pem)
  4. सर्वर के लिए एक प्रमाणपत्र तैयार करें और उस पर ca-key.pem (server-cert.pem) से हस्ताक्षर करें
  5. क्लाइंट प्रमाणपत्र के लिए एक कुंजी बनाएं (client-key.pem)
  6. क्लाइंट के लिए एक सर्टिफिकेट जेनरेट करें और उस पर ca-key.pem (client-cert.pem) से साइन करें

CA निजी कुंजी (ca-key.pem) के साथ हमेशा सावधान रहें - इसका उपयोग करने वाला कोई भी व्यक्ति अतिरिक्त क्लाइंट या सर्वर प्रमाणपत्र जेनरेट करने के लिए इसका उपयोग कर सकता है जिसे CA सत्यापन सक्षम होने पर वैध के रूप में स्वीकार किया जाएगा। लब्बोलुआब यह है कि सभी चाबियों को गुप्त रखा जाना चाहिए।

फिर आप [mysqld] निर्देश के तहत SSL-संबंधित चर जोड़ सकते हैं, उदाहरण के लिए:

ssl-ca=/etc/ssl/mysql/ca-cert.pem
ssl-cert=/etc/ssl/mysql/server-cert.pem
ssl-key=/etc/ssl/mysql/server-key.pem

परिवर्तनों को लोड करने के लिए MySQL सर्वर को पुनरारंभ करें। फिर REQUIRE SSL कथन के साथ एक उपयोगकर्ता बनाएं, उदाहरण के लिए:

mysql> GRANT ALL PRIVILEGES ON db1.* TO 'dbuser'@'192.168.1.100' IDENTIFIED BY 'mySecr3t' REQUIRE SSL;

REQUIRE SSL के साथ बनाए गए उपयोगकर्ता को सही क्लाइंट SSL फ़ाइलों (client-cert.pem, client-key.pem और ca-cert.pem) से कनेक्ट करने के लिए लागू किया जाएगा।

ClusterControl के साथ, क्लाइंट-सर्वर SSL एन्क्रिप्शन को "SSL एन्क्रिप्शन बनाएँ" सुविधा का उपयोग करके UI से आसानी से सक्षम किया जा सकता है।

गैलेरा एन्क्रिप्शन

गैलेरा के लिए एन्क्रिप्शन को सक्षम करने का मतलब है कि IST भी एन्क्रिप्ट किया जाएगा क्योंकि संचार एक ही सॉकेट के माध्यम से होता है। दूसरी ओर, एसएसटी को अलग से कॉन्फ़िगर करना होगा जैसा कि अगले भाग में दिखाया गया है। क्लस्टर में सभी नोड्स एसएसएल एन्क्रिप्शन के साथ सक्षम होना चाहिए और आपके पास नोड्स का मिश्रण नहीं हो सकता है जहां कुछ ने एसएसएल एन्क्रिप्शन को सक्षम किया है, और अन्य ने नहीं। इसे कॉन्फ़िगर करने का सबसे अच्छा समय एक नया क्लस्टर स्थापित करते समय है। हालांकि, यदि आपको इसे चालू उत्पादन प्रणाली में जोड़ने की आवश्यकता है, तो दुर्भाग्य से आपको क्लस्टर को रीबूट करना होगा और डाउनटाइम होगा।

क्लस्टर में सभी गैलेरा नोड्स को एक ही कुंजी, प्रमाणपत्र और सीए (वैकल्पिक) का उपयोग करना चाहिए। आप MySQL क्लाइंट-सर्वर एन्क्रिप्शन के लिए बनाई गई समान कुंजी और प्रमाणपत्र का भी उपयोग कर सकते हैं, या केवल इस उद्देश्य के लिए एक नया सेट तैयार कर सकते हैं। गैलेरा के अंदर एन्क्रिप्शन को सक्रिय करने के लिए, प्रत्येक गैलेरा नोड पर MySQL कॉन्फ़िगरेशन फ़ाइल के अंदर wsrep_provider_options के तहत विकल्प और मूल्य को जोड़ना होगा। उदाहरण के लिए, हमारे गैलेरा नोड के लिए निम्नलिखित मौजूदा लाइन पर विचार करें:

wsrep_provider_options = "gcache.size=512M; gmcast.segment=0;"

एक अर्ध-बृहदान्त्र द्वारा सीमांकित, उद्धरण के अंदर संबंधित चर जोड़ें:

wsrep_provider_options = "gcache.size=512M; gmcast.segment=0; socket.ssl_cert=/etc/mysql/cert.pem; socket.ssl_key=/etc/mysql/key.pem;"

गैलेरा के एसएसएल संबंधित मापदंडों के बारे में अधिक जानकारी के लिए, यहां देखें। इस संशोधन को सभी नोड्स पर करें। फिर, बंद होने वाले अंतिम नोड से क्लस्टर (एक समय में एक नोड) और बूटस्ट्रैप को रोकें। आप यह सत्यापित कर सकते हैं कि MySQL त्रुटि लॉग को देखकर SSL सही ढंग से लोड किया गया है या नहीं:

2018-01-19T01:15:30.155211Z 0 [Note] WSREP: gcomm: connecting to group 'my_wsrep_cluster', peer '192.168.10.61:,192.168.10.62:,192.168.10.63:'
2018-01-19T01:15:30.159654Z 0 [Note] WSREP: SSL handshake successful, remote endpoint ssl://192.168.10.62:53024 local endpoint ssl://192.168.10.62:4567 cipher: AES128-SHA compression:

क्लस्टरकंट्रोल के साथ, गैलेरा प्रतिकृति एन्क्रिप्शन को "एसएसएल गैलेरा एन्क्रिप्शन बनाएं" सुविधा का उपयोग करके आसानी से सक्षम किया जा सकता है।

SST एन्क्रिप्शन

जब एसएसटी एन्क्रिप्शन के बिना होता है, तो एसएसटी प्रक्रिया जारी रहने के दौरान डेटा संचार उजागर हो जाता है। SST एक डोनर से जॉइनर नोड तक एक पूर्ण डेटा सिंक्रोनाइज़ेशन प्रक्रिया है। अगर कोई हमलावर पूरे डेटा ट्रांसमिशन को "देख" पाता है, तो उस व्यक्ति को आपके डेटाबेस का पूरा स्नैपशॉट मिल जाएगा।

एन्क्रिप्शन के साथ SST केवल mysqldump और xtrabackup-v2 विधियों के लिए समर्थित है। mysqldump के लिए, उपयोगकर्ता को सभी नोड्स पर "REQUIRE SSL" दिया जाना चाहिए और कॉन्फ़िगरेशन मानक MySQL क्लाइंट-सर्वर SSL एन्क्रिप्शन (जैसा कि पिछले अनुभाग में वर्णित है) के समान है। एक बार क्लाइंट-सर्वर एन्क्रिप्शन सक्रिय हो जाने के बाद, एसएसएल के साथ एक नया एसएसटी उपयोगकर्ता बनाएं:

mysql> GRANT ALL ON *.* TO 'sst_user'@'%' IDENTIFIED BY 'mypassword' REQUIRE SSL;

rsync के लिए, हम गैलेरा क्लस्टर के लिए galera-secure-rsync, एक ड्रॉप-इन SSL-सुरक्षित rsync SST स्क्रिप्ट का उपयोग करने की सलाह देते हैं। यह लगभग wsrep_sst_rsync . की तरह काम करता है सिवाय इसके कि यह एसएसएल के साथ एसएसएल के साथ वास्तविक संचार को सुरक्षित करता है। आवश्यक क्लाइंट/सर्वर कुंजी और प्रमाणपत्र फ़ाइलें जेनरेट करें, उन्हें सभी नोड्स में कॉपी करें और इसे सक्रिय करने के लिए MySQL कॉन्फ़िगरेशन फ़ाइल के अंदर SST विधि के रूप में "secure_rsync" निर्दिष्ट करें:

wsrep_sst_method=secure_rsync

xtrabackup के लिए, [sst] निर्देश के तहत MySQL कॉन्फ़िगरेशन फ़ाइल के अंदर निम्नलिखित कॉन्फ़िगरेशन विकल्प सक्षम होने चाहिए:

[sst]
encrypt=4
ssl-ca=/path/to/ca-cert.pem
ssl-cert=/path/to/server-cert.pem
ssl-key=/path/to/server-key.pem

डेटाबेस पुनरारंभ आवश्यक नहीं है। यदि गैलेरा द्वारा इस नोड को दाता के रूप में चुना जाता है, तो गैलेरा द्वारा एसएसटी शुरू करने पर इन कॉन्फ़िगरेशन विकल्पों को स्वचालित रूप से उठाया जाएगा।

SELinux

सुरक्षा-एन्हांस्ड लिनक्स (SELinux) कर्नेल में लागू एक एक्सेस कंट्रोल मैकेनिज्म है। SELinux के बिना, केवल पारंपरिक अभिगम नियंत्रण विधियों जैसे कि फ़ाइल अनुमतियाँ या ACL का उपयोग उपयोगकर्ताओं की फ़ाइल पहुँच को नियंत्रित करने के लिए किया जाता है।

डिफ़ॉल्ट रूप से, सख्त प्रवर्तन मोड सक्षम होने के साथ, सब कुछ अस्वीकार कर दिया जाता है और व्यवस्थापक को कार्य करने के लिए सिस्टम के तत्वों के लिए अपवाद नीतियों की एक श्रृंखला बनानी पड़ती है। SELinux को पूरी तरह से अक्षम करना आजकल कई RedHat आधारित संस्थापन के लिए एक सामान्य खराब अभ्यास बन गया है।

कार्यभार, उपयोग पैटर्न और प्रक्रियाओं के आधार पर, सबसे अच्छा तरीका है कि आप अपने पर्यावरण के अनुरूप अपना स्वयं का SELinux नीति मॉड्यूल बनाएं। आपको वास्तव में जो करने की ज़रूरत है वह है SELinux को अनुमेय मोड में सेट करना (केवल लागू किए बिना लॉगिंग करना), और उन घटनाओं को ट्रिगर करना जो SELinux को लॉग करने के लिए गैलेरा नोड पर हो सकती हैं। जितना व्यापक, उतना अच्छा। उदाहरण ईवेंट जैसे:

  • नोड को डोनर या जॉइनर के रूप में शुरू करना
  • आईएसटी ट्रिगर करने के लिए नोड को पुनरारंभ करें
  • विभिन्न एसएसटी विधियों का प्रयोग करें
  • mysqldump या xtrabackup का उपयोग करके MySQL डेटाबेस का बैकअप लें और पुनर्स्थापित करें
  • बाइनरी लॉग सक्षम और अक्षम करें

एक उदाहरण यह है कि यदि गैलेरा नोड की निगरानी ClusterControl द्वारा की जाती है और क्वेरी मॉनिटर सुविधा सक्षम है, तो ClusterControl धीमी क्वेरी लॉग चर को धीमी गति से चलने वाली क्वेरी को कैप्चर करने के लिए सक्षम/अक्षम करेगा। इस प्रकार, आप ऑडिट.लॉग में निम्नलिखित इनकार देखेंगे:

$ grep -e denied audit/audit.log | grep -i mysql
type=AVC msg=audit(1516835039.802:37680): avc:  denied  { open } for  pid=71222 comm="mysqld" path="/var/log/mysql/mysql-slow.log" dev="dm-0" ino=35479360 scontext=system_u:system_r:mysqld_t:s0 tcontext=unconfined_u:object_r:var_log_t:s0 tclass=file

विचार यह है कि सभी संभावित इनकारों को ऑडिट लॉग में लॉग इन किया जाए, जिसे बाद में audit2allow का उपयोग करके पॉलिसी मॉड्यूल उत्पन्न करने के लिए उपयोग किया जा सकता है। इसे SELinux में लोड करने से पहले। कोडरशिप ने इसे प्रलेखन पृष्ठ, SELinux कॉन्फ़िगरेशन में विवरण में शामिल किया है।

एसएसटी खाता और विशेषाधिकार

एसएसटी गैलेरा द्वारा निष्पादित एक प्रारंभिक सिंकिंग प्रक्रिया है। यह एक जॉइनर नोड को क्लस्टर के बाकी सदस्यों के साथ अप-टू-डेट लाता है। प्रक्रिया मूल रूप से दाता नोड से डेटा निर्यात करती है और इसे जॉइनर नोड पर पुनर्स्थापित करती है, इससे पहले कि जॉइनर को कतार से शेष लेनदेन (यानी, जो सिंकिंग प्रक्रिया के दौरान हुआ) पर पकड़ने की अनुमति दी जाती है। तीन SST तरीके समर्थित हैं:

  • mysqldump
  • rsync
  • अतिरिक्त बैकअप (या एक्स्ट्राबैकअप-v2)

Mysqldump SST उपयोग के लिए, निम्नलिखित विशेषाधिकारों की आवश्यकता है:

  • चुनें, देखें, दिखाएं, ट्रिगर, टेबल लॉक करें, फिर से लोड करें, फ़ाइल करें

हम mysqldump के साथ आगे नहीं जा रहे हैं क्योंकि इसे अक्सर उत्पादन में एसएसटी विधि के रूप में उपयोग नहीं किया जाता है। इसके अलावा, यह दाता पर एक अवरुद्ध प्रक्रिया है। तेजी से सिंक करने में लगने वाले समय और mysqldump की तुलना में कम त्रुटि-प्रवण के कारण xtrabackup के बाद आमतौर पर Rsync एक पसंदीदा दूसरी पसंद है। SST प्रमाणीकरण को rsync के साथ अनदेखा किया जाता है, इसलिए यदि rsync चुना हुआ SST तरीका है, तो आप SST खाता विशेषाधिकारों को कॉन्फ़िगर करना छोड़ सकते हैं।

एक्स्ट्राबैकअप के साथ आगे बढ़ते हुए, मानक बैकअप के लिए निम्नलिखित विशेषाधिकारों की सलाह दी जाती है और एक्स्ट्राबैकअप दस्तावेज़ीकरण पृष्ठ के आधार पर प्रक्रियाओं को बहाल करने की सलाह दी जाती है:

  • बनाएँ, तालिका स्थान बनाएँ, घटना, सम्मिलित करें, तालिका लॉक करें, प्रक्रिया करें, पुनः लोड करें, प्रतिकृति क्लाइंट चुनें, चुनें, दृश्य दिखाएं, सुपर

हालांकि एक्स्ट्राबैकअप के एसएसटी उपयोग के लिए, केवल निम्नलिखित विशेषाधिकार मायने रखते हैं:

  • प्रक्रिया, पुनः लोड, प्रतिकृति ग्राहक

इस प्रकार, एसएसटी के लिए अनुदान विवरण को इस प्रकार कम किया जा सकता है:

mysql> GRANT PROCESS,RELOAD,REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost' IDENTIFIED BY '[email protected]@sTr0nG%%P4ssW0rD';

फिर, MySQL कॉन्फ़िगरेशन फ़ाइल के अंदर तदनुसार wsrep_sst_auth कॉन्फ़िगर करें:

wsrep_sst_auth = sstuser:[email protected]@sTr0nG%%P4ssW0rD

लोकलहोस्ट के लिए केवल SST उपयोगकर्ता को अनुदान दें और एक मजबूत पासवर्ड का उपयोग करें। रूट उपयोगकर्ता को एसएसटी खाते के रूप में उपयोग करने से बचें, क्योंकि यह इस चर के तहत कॉन्फ़िगरेशन फ़ाइल के अंदर रूट पासवर्ड को उजागर करेगा। साथ ही, MySQL रूट पासवर्ड को बदलने या रीसेट करने से भविष्य में SST टूट जाएगा।

MySQL सुरक्षा सख्त करना

गैलेरा क्लस्टर InnoDB स्टोरेज इंजन के लिए एक मल्टी-मास्टर प्रतिकृति प्लगइन है, जो MySQL और MariaDB कांटे पर चलता है। इसलिए, मानक MySQL/MariaDB/InnoDB सुरक्षा सख्त सिफारिशें गैलेरा क्लस्टर पर भी लागू होती हैं।

इस विषय को कई ब्लॉग पोस्ट में शामिल किया गया है। हमने इस विषय को निम्नलिखित ब्लॉग पोस्ट में भी शामिल किया है:

  • MySQL और MariaDB सुरक्षा कैसे प्राप्त करें, इस पर दस युक्तियाँ
  • ClusterControl युक्तियाँ और तरकीबें:अपने MySQL इंस्टालेशन को सुरक्षित करना
  • ClusterControl से अपने ओपन सोर्स डेटाबेस को कैसे सुरक्षित करें

उपरोक्त ब्लॉग पोस्ट आराम से डेटा और ट्रांज़िट में डेटा को एन्क्रिप्ट करने, ऑडिट प्लग इन, सामान्य सुरक्षा दिशानिर्देश, नेटवर्क सुरक्षा सर्वोत्तम प्रथाओं आदि की आवश्यकता को सारांशित करते हैं।

लोड बैलेंसर का उपयोग करें

कई डेटाबेस लोड बैलेंसर (रिवर्स प्रॉक्सी) हैं जिनका उपयोग गैलेरा - HAProxy, ProxySQL और MariaDB MaxScale के साथ उनमें से कुछ के नाम के लिए किया जा सकता है। आप अपने गैलेरा नोड्स तक पहुंच को नियंत्रित करने के लिए लोड बैलेंसर सेट कर सकते हैं। यह डेटाबेस इंस्टेंस के बीच डेटाबेस वर्कलोड को वितरित करने के साथ-साथ एक्सेस को प्रतिबंधित करने का एक शानदार तरीका है, उदाहरण के लिए, यदि आप रखरखाव के लिए एक नोड को ऑफ़लाइन लेना चाहते हैं, या यदि आप गैलेरा नोड्स पर खोले गए कनेक्शन की संख्या को सीमित करना चाहते हैं। लोड बैलेंसर कनेक्शन को कतारबद्ध करने में सक्षम होना चाहिए, और इसलिए आपके डेटाबेस सर्वर को कुछ अधिभार संरक्षण प्रदान करना चाहिए।

ProxySQL, एक शक्तिशाली डेटाबेस रिवर्स-प्रॉक्सी जो MySQL और MariaDB को समझता है, डेटाबेस सर्वर से आपत्तिजनक प्रश्नों को ब्लॉक करने के लिए क्वेरी फ़ायरवॉल जैसी कई उपयोगी सुरक्षा सुविधाओं के साथ बढ़ाया जा सकता है। क्वेरी रूल्स इंजन का उपयोग खराब प्रश्नों को कुछ बेहतर/सुरक्षित में फिर से लिखने के लिए भी किया जा सकता है, या उन्हें किसी अन्य सर्वर पर पुनर्निर्देशित किया जा सकता है जो किसी भी गैलेरा नोड्स को प्रभावित किए बिना लोड को अवशोषित कर सकता है। MariaDB MaxScale अपने डेटाबेस फ़ायरवॉल फ़िल्टर के साथ नियमित अभिव्यक्तियों पर आधारित प्रश्नों को अवरुद्ध करने में भी सक्षम है।

आपके गैलेरा क्लस्टर के लिए लोड बैलेंसर होने का एक अन्य लाभ सार्वजनिक नेटवर्क पर डेटाबेस स्तर को उजागर किए बिना डेटा सेवा को होस्ट करने की क्षमता है। एक निजी नेटवर्क में डेटाबेस नोड्स तक पहुंच प्राप्त करने के लिए प्रॉक्सी सर्वर का उपयोग गढ़ मेजबान के रूप में किया जा सकता है। डेटाबेस क्लस्टर को बाहरी दुनिया से अलग करके, आपने महत्वपूर्ण हमलावर वैक्टरों में से एक को हटा दिया है।

यही बात है। हमेशा सुरक्षित और सुरक्षित रहें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL क्विक टिप:DAYOFWEEK फंक्शन का उपयोग करना

  2. MySQL में टोटल रो कैसे जोड़ें

  3. PHP 7.0 पर Laravel 5.4:PDO अपवाद - ड्राइवर नहीं मिला (MySQL)

  4. AWS RDS MySQL में धीमी क्वेरी लॉग को कैसे सक्षम करें

  5. मैं PHP में पीडीओ के माध्यम से एक MySQL क्वेरी के माध्यम से कैसे लूप करूं?