ServBay MariaDB/MySQL सॉफ़्टवेयर पैकेज समस्या निवारण गाइड
अवलोकन
MariaDB और MySQL अग्रणी ओपन-सोर्स रिलेशनल डेटाबेस प्रबंधन सिस्टम हैं, जो विभिन्न वेब एप्लिकेशन और बिजनेस scénarios में व्यापक रूप से उपयोग होते हैं। ServBay ने macOS वातावरण में MariaDB/MySQL के कई वर्शन को एकीकृत किया है, जिससे डेवलपर्स को एक सुविधाजनक और प्रभावी स्थानीय डेटाबेस वातावरण मिलता है। यद्यपि इनकी स्थिरता प्रसिद्ध है, फिर भी विकास और रनटाइम के दौरान पैकेज स्टार्ट ना होने, कनेक्शन विफलता या प्रदर्शन कमी जैसी समस्याएँ आ सकती हैं।
यह गाइड ServBay उपयोगकर्ताओं को आम MariaDB/MySQL सॉफ़्टवेयर पैकेज समस्याओं का निदान और समाधान करने में सहायता हेतु बनाई गई है। इसमें आम समस्याएँ, जांचने के स्टेप्स और समाधान दिए गए हैं, साथ ही ServBay के वातावरण के लिए विशिष्ट पथ और कमांड स्पष्ट किए गए हैं।
महत्वपूर्ण सूचना:
- किसी भी डेटा या कॉन्फ़िगरेशन बदलने वाले कार्य से पहले, कृपया अपने डेटाबेस का बैकअप जरूर लें! ServBay में इन-बिल्ट बैकअप सुविधा है, जिसका नियमित उपयोग करने की सिफारिश की जाती है।
- कमांड और पथ के उदाहरणों में संस्करण संख्या (जैसे
11.3
या11.5
) दिखाई गई है, कृपया अपने ServBay में प्रयुक्त MariaDB/MySQL के वास्तविक संस्करण के अनुसार बदलें। संस्करण जानकारी ServBay एप्लिकेशन इंटरफ़ेस में देखी जा सकती है। - कमांड उदाहरणों में
<username>
,<database>
,<your_backup.sql>
जैसे प्लेसहोल्डर का प्रयोग हुआ है, इन्हें अपने वास्तविक उपयोगकर्ता नाम, डेटाबेस नाम, बैकअप फ़ाइलनाम आदि से बदलें। - यह गाइड macOS ऑपरेटिंग सिस्टम पर आधारित है।
सामान्य प्रारंभिक जांच कदम
विशिष्ट समस्या की विस्तार से जाँच से पहले, निम्न आधारभूत जांचें अवश्य करें:
- ServBay सॉफ़्टवेयर पैकेज स्थिति जांचें: ServBay एप्लिकेशन खोलें, सुनिश्चित करें कि वांछित MariaDB/MySQL संस्करण सक्षम और "चल रहा है" दिखाया गया है। कमांड लाइन से भी जांचें:bash
servbayctl status mariadb <version> # उदाहरण: MariaDB 11.3 की स्थिति जांचें: servbayctl status mariadb 11.3
1
2
3 - ServBay एप्लिकेशन लॉग देखें: कभी-कभी ServBay स्वयं भी पैकेज स्टार्ट या प्रबंधन के प्रयास में त्रुटियाँ लॉग करता है। एप्लिकेशन के लॉग सेक्शन में देखें या मुख्य लॉग फ़ाइल जाँचें।
- MariaDB/MySQL त्रुटि लॉग देखें: स्टार्टअप विफल, रनटाइम एरर आदि की सबसे महत्वपूर्ण जांच! लॉग पथ है:bashअंत में दी गई त्रुटि जानकारियों को ध्यान से पढ़ें, यही समस्या की असली वजह बता सकती हैं।
/Applications/ServBay/logs/mariadb/<version>/<version>.err # उदाहरण: MariaDB 11.3 का नवीनतम 50 पंक्तियों का त्रुटि लॉग: tail -n 50 /Applications/ServBay/logs/mariadb/11.3/11.3.err
1
2
3
सामान्य समस्याएँ एवं उनके समाधान
1. कनेक्शन त्रुटि: SQLSTATE[HY000] [2002] No such file or directory
यह त्रुटि प्रायः क्लाइंट द्वारा Unix socket फ़ाइल के जरिये MariaDB/MySQL सर्वर से जुड़ने में असमर्थता का संकेत है। macOS पर, Unix socket स्थानीय प्रक्रिया इंटर-कम्युनिकेशन के लिए काम आता है, जो TCP/IP से हल्का और तेज़ है। जब ऐप्लिकेशन या CLI टूल अपेक्षित socket पथ पर फ़ाइल नहीं पाता, तब यह त्रुटि होती है।
संभावित कारण एवं समाधान:
- MariaDB/MySQL सॉफ़्टवेयर पैकेज चालू नहीं:
- ServBay इंटरफ़ेस या
servbayctl status mariadb <version>
कमांड से पैकेज की स्थिति जांचें। - अगर बंद है तो
servbayctl start mariadb <version>
चलाएँ एवं.err
लॉग देखें।
- ServBay इंटरफ़ेस या
- Socket फ़ाइल का पथ गलत:
- क्लाइंट द्वारा प्रयुक्त socket पथ और सर्वर के
my.cnf
में सेट पथ में अंतर हो सकता है। - MariaDB/MySQL का कॉन्फ़िग फ़ाइल
/Applications/ServBay/etc/mariadb/<version>/my.cnf
मेंsocket
पैरामीटर देखें। - सुनिश्चित करें कि क्लाइंट या ऐप्लिकेशन ServBay डिफ़ॉल्ट socket पथ (आमतौर पर
/Applications/ServBay/tmp/
या/tmp/
) से जुड़ रहा हो।
- क्लाइंट द्वारा प्रयुक्त socket पथ और सर्वर के
- ServBay डिफ़ॉल्ट सेटिंग समस्या:
- ServBay सेटिंग्स में "Default SQL Server" अनुभाग में सही MariaDB/MySQL वर्शन डिफ़ॉल्ट के रूप में चुना है या नहीं, यह जांचें। कई टूल बिना
-S
या-h
के डिफ़ॉल्ट socket से कनेक्ट करते हैं।
- ServBay सेटिंग्स में "Default SQL Server" अनुभाग में सही MariaDB/MySQL वर्शन डिफ़ॉल्ट के रूप में चुना है या नहीं, यह जांचें। कई टूल बिना
- अनुमति समस्या:
- MariaDB/MySQL प्रक्रिया चलाने वाले यूज़र को socket फ़ाइल और उसके डायरेक्टरी पर सही पढ़ने/लिखने की अनुमति चाहिए। यदि आपने
/Applications/ServBay/tmp/
या/tmp/
की अनुमति बदली हो, तो संभावित समस्या हो सकती है।
- MariaDB/MySQL प्रक्रिया चलाने वाले यूज़र को socket फ़ाइल और उसके डायरेक्टरी पर सही पढ़ने/लिखने की अनुमति चाहिए। यदि आपने
विकल्प (नेटवर्क कनेक्शन का ज़ोर):
- कनेक्शन के लिए
localhost
की बजाय127.0.0.1
का प्रयोग करें जिससे कनेक्शन TCP/IP पर जाए और socket की समस्या स्पष्ट हो सके।bashmysql -u <username> -p -h 127.0.0.1 -P 3306
1
2. कनेक्शन त्रुटि: नेटवर्क से संबंधित (जैसे Connection refused
, Can't connect to MySQL server
)
इस प्रकार की त्रुटियाँ प्रायः TCP/IP के माध्यम से MariaDB/MySQL सर्वर से कनेक्ट न हो पाने का संकेत होती हैं।
संभावित कारण एवं समाधान:
- MariaDB/MySQL सॉफ़्टवेयर पैकेज चालू नहीं: (ऊपर समान, स्थिति और
.err
लॉग देखें) - पोर्ट पर कब्जा:
- MariaDB/MySQL सामान्यतः पोर्ट 3306 का उपयोग करता है, सुनिश्चित करें कि इस पोर्ट पर कोई अन्य सेवा चालू नहीं।bash
lsof -i :3306 # या netstat -anv | grep LISTEN | grep 3306
1
2
3 - यदि आवश्यकता हो तो पोर्ट अथवा
my.cnf
मेंport
पैरामीटर बदलें और पैकेज फिर से स्टार्ट करें।
- MariaDB/MySQL सामान्यतः पोर्ट 3306 का उपयोग करता है, सुनिश्चित करें कि इस पोर्ट पर कोई अन्य सेवा चालू नहीं।
- फ़ायरवाल द्वारा अवरुद्ध:
- macOS सिस्टम सेटिंग → नेटवर्क → फ़ायरवाल और तृतीय-पक्ष फ़ायरवाल सॉफ़्टवेयर जाँचें।
- अस्थायी रूप से
mysqld
को फ़ायरवाल में अनुमति देने के लिए:bash# पथ स्थिति के अनुसार एडजस्ट करें sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/ServBay/bin/mariadb/<version>/bin/mysqld sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/ServBay/bin/mariadb/<version>/bin/mysqld
1
2
3
- कॉन्फ़िगरेशन समस्या (
bind-address
):- यदि
my.cnf
मेंbind-address
127.0.0.1
/localhost
पर सेट है, तो केवल लोकल कनेक्शन ही स्वीकार होंगे। बाहरी कंप्यूटर से कनेक्ट करने हेतु इसे0.0.0.0
या उपयुक्त IP पर सेट करें और फ़ायरवाल को अनुमति दें।
- यदि
- नेटवर्क कॉन्फ़िग (localhost रेज़ोल्व):
ping localhost
या/etc/hosts
जांचें।- सुनिश्चित करें कि कोई प्रॉक्सी या नेटवर्क सॉफ़्टवेयर
localhost
ट्रैफ़िक को प्रभावित न कर रहा हो।
3. MariaDB/MySQL सॉफ़्टवेयर पैकेज स्टार्ट नहीं हो रहा
संभावित कारण एवं समाधान:
- त्रुटि लॉग जांचें (सबसे महत्वपूर्ण!):
/Applications/ServBay/logs/mariadb/<version>/<version>.err
फ़ाइल में स्टार्ट असफलता का वास्तविक कारण मिलेगा। - कन्फिगरेशन फ़ाइल में त्रुटियाँ:
/Applications/ServBay/etc/mariadb/<version>/my.cnf
में गलत पैरामीटर, पथ या सिंटैक्स हो सकता है।- जॉंच के लिए:bash
/Applications/ServBay/bin/mariadb/<version>/bin/mysqld --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf --validate-config
1
- पोर्ट का द्वारोपयोग: (जैसा ऊपर)
- डिस्क स्पेस की कमी:
/Applications/ServBay/db/mariadb/<version>/
या/Applications/ServBay/logs/mariadb/<version>/
की ड्राइव में पर्याप्त स्पेस होना आवश्यक है। - अनुमति समस्या:
- डेटाबेस प्रोसेस का युज़र संबंधित फ़ाइल/डायरेक्टरी पर पढ़ने, लिखने और निष्पादन की अनुमति रखे।bash
ls -ld /Applications/ServBay/db/mariadb/<version> ls -l /Applications/ServBay/etc/mariadb/<version>/my.cnf ls -ld /Applications/ServBay/logs/mariadb/<version>
1
2
3
- डेटाबेस प्रोसेस का युज़र संबंधित फ़ाइल/डायरेक्टरी पर पढ़ने, लिखने और निष्पादन की अनुमति रखे।
- डेटा फ़ाइल करप्शन: (डिटेल नीचे "डेटाबेस क्रैश या डेटा करप्शन" अनुभाग देखें)
समाधान के बाद:
servbayctl restart mariadb <version>
चलाएँ
4. उपयोगकर्ता अनुमति या प्रमाणीकरण समस्या
सफल कनेक्शन के बाद, अगर गलत username, password या अनुमति कारणों से Error (जैसे Access denied
) आए:
संभावित कारण एवं समाधान:
- Username या Password गलत: कनेक्शन के username/password की पुष्टि करें। ServBay में root पासवर्ड रिसेट सुविधा मौजूद है।
- होस्ट रिस्ट्रिक्शन: जैसे '
<username>
@localhost
' या '<username>
@127.0.0.1
' में अंतर, जबकि '%' सभी जगहों से कनेक्शन अनुमति देता है। - अधिकार/पर्मीशन की कमी: यूज़र को टार्गेट डेटाबेस या जांचे गए ऑपरेशन का अधिकार नहीं है।
- यूज़र अधिकार देखें:
- root से लॉगिन:bash
mysql -u root -p
1 - SQL में यूज़र के ग्रांट देखें:sql
SHOW GRANTS FOR '<username>'@'<hostname>'; -- उदाहरण: SHOW GRANTS FOR 'webapp'@'localhost'; SHOW GRANTS FOR 'admin'@'%';
1
2
3
4 - आवश्यकता हो तो GRANT/REVOKE से यूज़र अधिकार बदलें या नया प्रयोक्ता बनाएँ।
- root से लॉगिन:
5. प्रदर्शन समस्या
कम प्रदर्शन का पूरे ऐप्लिकेशन पर असर पड़ता है।
संभावित कारण एवं समाधान:
- धीमा क्वेरी: क्वेरी में इफिशियंसी, इंडेक्स की कमी या प्लान समस्याएँ।
- धीमा क्वेरी लॉग सक्रिय करें:
my.cnf
मेंslow_query_log = 1
,long_query_time = 1
तथाslow_query_log_file
सेट करें। - EXPLAIN का प्रयोग: क्वेरी के समक्ष EXPLAIN लगाकर प्लान देखें:sql
EXPLAIN SELECT * FROM your_table_name WHERE column_name = 'value';
1 - क्वेरी ऑप्टिमाइज़ करें:
EXPLAIN
के आधार पर क्वेरी व इंडेक्सस में सुधार करें।
- धीमा क्वेरी लॉग सक्रिय करें:
- इंडेक्स की कमी या ग़लत इंडेक्स: बार-बार सफल क्वेरी अथवा जॉइन वाले कॉलम्स पे इंडेक्स बनाएं:sqlध्यान दें, इंडेक्स बनाने से लिखावट लेनदेन में ओवरहेड आता है।
CREATE INDEX idx_column_name ON your_table_name(column_name);
1 - कैशिंग सेटिंग्स अनुचित:
my.cnf
मेंinnodb_buffer_pool_size
(InnoDB),key_buffer_size
(MyISAM) जैसे पैरामीटर सही सेट करें।ini[mysqld] innodb_buffer_pool_size = 2G # अगर MyISAM टेबल्स ज्यादा हों तो: # key_buffer_size = 256M
1
2
3
4 - हार्डवेयर संसाधन सीमा: CPU, मेमोरी, डिस्क या नेटवर्क का bottleneck हो सकता है। macOS Activity Monitor या
top
/htop
से जांचें।
6. डेटाबेस क्रैश या डेटा करप्शन
जब डेटाबेस स्टार्ट नहीं होता, बार-बार क्रैश होता है या डेटा एक्सेस असामान्य हो, डेटा फाइल्स के करप्शन पर संदेह करें।
संभावित कारण एवं समाधान:
- त्रुटि लॉग जांचें:
/Applications/ServBay/logs/mariadb/<version>/<version>.err
में करप्शन, InnoDB एरर, या हार्डवेयर समस्या की पुष्टि करें। - हार्डवेयर फेल्योर: डिस्क/मेमोरी के लिए System लॉग या हार्डवेयर डायग्नोस्टिक टूल देखें।
- सॉफ़्टवेयर संघर्ष या बग: विशेष MariaDB/MySQL वर्शन में बग या अन्य सॉफ़्टवेयर दखल।
- गलत कॉन्फ़िगरेशन: my.cnf में गलत पैरामीटर अस्थिरता पैदा कर सकता है।
- अनैतिक शटडाउन या इंटरप्शन: पैकेज को जबरदस्ती बंद करने से डेटा असंगत हो सकता है।
समाधान:
- सुरक्षित पुनः स्टार्ट का प्रयास करें: ServBay इंटरफ़ेस या CLI पर
servbayctl restart mariadb <version>
का उपयोग करें। - mysqlcheck का उपयोग करें: MyISAM टेबल्स के लिए जाँच एवं मरम्मत टूल:bashनोट:
mysqlcheck --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p --check --all-databases # MyISAM के लिए auto-repair प्रयास करें: # mysqlcheck --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p --auto-repair --check --all-databases
1
2
3--auto-repair
सिर्फ MyISAM टेबल्स के लिए है, InnoDB के लिए नीचे पढ़ें। - InnoDB force recovery (
innodb_force_recovery
):- प्राथमिकता से डेटा डाइरेक्टरी
/Applications/ServBay/db/mariadb/<version>/
की कॉपी बैकअप बना लें। /Applications/ServBay/etc/mariadb/<version>/my.cnf
फ़ाइल में[mysqld]
अंतर्गतinnodb_force_recovery = N
जोड़ें (N=1 से 6 तक बढ़ाएँ)।servbayctl start mariadb <version>
चलाएँ।- स्टार्ट सफल हो तो तुरंत
mysqldump
से बैकअप निकालें:bashmysqldump --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p --all-databases --routines --triggers --events > /path/to/your_emergency_backup.sql
1 - सुनिश्चित करें बैकअप सफल, फिर
servbayctl stop mariadb <version>
चलाएँ। - my.cnf से
innodb_force_recovery
हटाएँ। - डेटा का रिस्टोर करें: नया डेटा डायरेक्टरी (
/Applications/ServBay/db/mariadb/<version>/
) इनिशियलाइज़ करें, फिर backup.sql को इंपोर्ट करें।
- प्राथमिकता से डेटा डाइरेक्टरी
- बैकअप से पुनर्स्थापना: अगर फिक्स नहीं होता, तो
/Applications/ServBay/backup/mariadb/<version>/
(ServBay के बैकअप) से पुनर्स्थापित करें।bashनोट:# पहले टार्गेट डेटाबेस बनाएं # mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p -e "CREATE DATABASE <target_database_name>;" # इम्पोर्ट कमांड mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u <username> -p <target_database_name> < /Applications/ServBay/backup/mariadb/<version>/<your_backup.sql>
1
2
3
4
5<version>
में टार्गेट पैकेज का वर्शन डालें।
7. बैकअप और रिकवरी संबंधी समस्याएँ
ServBay के इन-बिल्ट बैकअप या mysqldump
से बैकअप/रिकवरी करते समय हो सकने वाली समस्याएँ:
संभावित कारण एवं समाधान:
- बैकअप फ़ाइल अधूरी/करप्ट:
ls -lh /path/to/your_backup.sql
से साइज़ जांचें।- टेक्स्ट एडिटर या
less /path/to/your_backup.sql
से पढ़ें। mysqldump
में error देखना न भूलें, ServBay बैकअप के लिए एप्लिकेशन लॉग देखें।
- रिकवरी कमांड त्रुटि:
- गलत username, password, database नाम का उपयोग।
- अपर्याप्त परमिशन, या SQL सिंटैक्स गलती (MySQL ↔ MariaDB में अंतर)।
- विदेशी कुंजी प्रतिबंध: डेटा इम्पोर्ट करते समय टेबल ऑर्डर से foreign key error आ सकते हैं, अतः इम्पोर्ट से पहले disable करें:sqlनोट: Import के दौरान ही इसे disable रखें अन्यथा डेटा इनकंसिस्टेंसी आ सकती है।
-- इम्पोर्ट से पहले SET foreign_key_checks = 0; -- कमांडलाइन पर या mysql क्लाइंट में इम्पोर्ट लें: source /path/to/your_backup.sql; -- इम्पोर्ट के बाद SET foreign_key_checks = 1;
1
2
3
4
5
6
7 - कैरेक्टर सेट/Collation समस्या: बैकअप और टार्गेट डेटाबेस में कैरेक्टर सेट, Collation समान रखें (जैसे utf8mb4)।
सही तरीके से डाटाबेस पुनर्स्थापित करें (कमांडलाइन उदाहरण):
bash
# माने बैकअप केवल एक डेटाबेस का है
# पहले डेटाबेस बना लें
# mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p -e "CREATE DATABASE <target_database_name>;"
# फिर इम्पोर्ट करें
mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u <username> -p <target_database_name> < /Applications/ServBay/backup/mariadb/<version>/<your_backup.sql>
# अगर --all-databases का बैकअप है तो डाटाबेस नाम न दें:
# mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u <username> -p < /Applications/ServBay/backup/mariadb/<version>/<your_backup.sql>
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
नोट: <version>
में अपने पैकेज का वर्शन डालें। ServBay के इन-बिल्ट बैकअप कार्य में रिकवरी आसान रहती है।
8. विशिष्ट बग: MariaDB 11.5.1 InnoDB स्टार्ट असफल (ib_logfile0 was not found
/ Missing FILE_CHECKPOINT
)
यह बग MariaDB 11.5.1 का ज्ञात गंभीर समस्या है, जिससे InnoDB स्टोरेज इंजन स्टार्ट नहीं होता।
त्रुटि लॉग उदाहरण:
/Applications/ServBay/logs/mariadb/11.5/11.5.err
में निम्न प्रकार की प्रविष्टियाँ हो सकती हैं—
[ERROR] InnoDB: File /Applications/ServBay/db/mariadb/11.5/ib_logfile0 was not found
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
1
2
3
4
2
3
4
या:
[ERROR] InnoDB: Missing FILE_CHECKPOINT(xxxxx) at xxxxx
[ERROR] InnoDB: Log scan aborted at LSN xxxxx
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
1
2
3
4
5
2
3
4
5
यह त्रुटियाँ बताती हैं कि InnoDB को लॉग फ़ाइलें मिल नहीं रहीं या करप्ट हैं।
समाधान (डेटा माइग्रेशन से पूर्व बैकअप जरूरी):
इस समस्या का अच्छा समाधान यही है कि फोर्स स्टार्ट कर डेटा बैकअप निकालें, फिर डेटा को स्थिर MariaDB वर्शन में माइग्रेट करें।
- फोर्स रिकवरी का प्रयास करें (जोखिम भरा!):
/Applications/ServBay/etc/mariadb/11.5/my.cnf
में[mysqld]
के तहतinnodb_force_recovery = 6
डालें।- ServBay से या CLI से MariaDB 11.5 को स्टार्ट करें:
servbayctl start mariadb 11.5
- अगर स्टार्ट हो जाए, तुरंत
mysqldump
से पूर्ण बैकअप निकालें:bashअनिवार्य है कि बैकअप फ़ाइल सफल बने और साइज़ उचित हो।mysqldump --defaults-file=/Applications/ServBay/etc/mariadb/11.5/my.cnf -u root -p --all-databases --routines --triggers --events > /Applications/ServBay/backup/mariadb/11.5/mariadb_11.5_emergency_backup.sql
1
- प्रॉब्लेम वर्शन डेटा डायरेक्टरी बंद कर पुनः set up करें:
servbayctl stop mariadb 11.5
चलाएँ- my.cnf से
innodb_force_recovery
लाइन हटा/कॉमेंट करें