Skip to content
VDS · डेटाबेस

MySQL और MariaDB: इंस्टॉलेशन और आपका पहला डेटाबेस

VDS पर डेटाबेस सर्वर इंस्टॉल करना, सुरक्षित शुरुआती सेटअप, डेटाबेस और यूज़र बनाना, कनेक्शन जाँचना, और शुरुआत की आम गलतियाँ।

23 अगस्त 2026 को अपडेट किया गया

MySQL और उसकी संगत शाखा MariaDB वही हैं जिन पर ज़्यादातर PHP साइटें चलती हैं। उनके कमांड और क्लाइंट एक जैसे हैं; फ़र्क़ बारीक ट्यूनिंग से शुरू होता है।

इंस्टॉलेशन

apt update && apt install -y mariadb-server      # Debian, Ubuntu
dnf install -y mariadb-server                    # AlmaLinux, CentOS Stream
systemctl enable --now mariadb

अगर आपको ख़ास तौर पर Oracle का MySQL चाहिए, तो उसके आधिकारिक रिपॉज़िटरी से mysql-server इंस्टॉल करें। सर्विस का नाम mysql होगा।

बुनियादी सुराख़ तुरंत बंद करें:

mariadb-secure-installation

स्क्रिप्ट आपसे root पासवर्ड सेट करने, अनाम यूज़र हटाने, रिमोट root लॉगिन बंद करने और टेस्ट डेटाबेस ड्रॉप करने के लिए कहेगी। हर सवाल का जवाब “yes” दें।

डेटाबेस और यूज़र

अपनी एप्लिकेशन को root के तौर पर न चलाएँ — हर प्रोजेक्ट के लिए अलग यूज़र बनाएँ:

CREATE DATABASE shop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'shop'@'localhost' IDENTIFIED BY 'long-random-password';
GRANT ALL PRIVILEGES ON shop.* TO 'shop'@'localhost';
FLUSH PRIVILEGES;

utf8mb4 एन्कोडिंग ज़रूरी है: MySQL में पुरानी utf8 हर अक्षर के लिए सिर्फ़ तीन बाइट स्टोर करती है और इमोजी तथा कुछ अक्षरों पर टूट जाती है।

जाँचें:

mariadb -u shop -p shop -e "SELECT 1;"

अनुमतियों के बारे में ज़्यादा जानने के लिए users and grants देखें।

शुरुआती सेटअप

सेटिंग्स /etc/mysql/mariadb.conf.d/50-server.cnf या /etc/my.cnf.d/ में रहती हैं। यहाँ वह न्यूनतम है जो आपको तुरंत ठीक करना चाहिए:

[mysqld]
bind-address = 127.0.0.1
innodb_buffer_pool_size = 1G
max_connections = 100

bind-address = 127.0.0.1 डेटाबेस को सिर्फ़ लोकल तक सीमित रखता है। अगर आपकी एप्लिकेशन उसी मशीन पर है, तो ऐसा ही होना चाहिए। अगर आपको डेटाबेस बाहर से चाहिए, तो कुछ भी बदलने से पहले remote access पढ़ें।

बफ़र पूल का साइज़ टियर के हिसाब से चुना जाता है — memory tuning देखें।

एडिट करने के बाद: systemctl restart mariadb।

आम एरर

लक्षणकारणक्या करें
Access denied for userग़लत पासवर्ड या यूज़र एंट्री किसी दूसरे होस्ट से बंधी हैSELECT user, host FROM mysql.user; जाँचें
Can't connect through socketसर्विस चल नहीं रहीsystemctl status mariadb देखें, journalctl -u mariadb जाँचें
Too many connectionsएप्लिकेशन कनेक्शन बंद नहीं करतीएप्लिकेशन की तरफ़ पूल लगाएँ, फिर max_connections
टेक्स्ट गड़बड़ दिखनाडेटाबेस और कनेक्शन की एन्कोडिंग अलग-अलगसब कुछ utf8mb4 पर लाएँ
रीबूट के बाद डेटाबेस शुरू नहीं होतासर्विस बूट पर शुरू होने के लिए सेट नहीं हैsystemctl enable mariadb

मशीन का कोई ऑटोमैटिक बैकअप नहीं होता। अपनी पहली काम करने वाली टेबल के तुरंत बाद डंप सेट करें — database backups। NVMe डिस्क तेज़ है, लेकिन सिर्फ़ एक है।