रिमोट डेटाबेस एक्सेस: पूरे इंटरनेट पर कैसे न खोलें
अपने काम के कंप्यूटर से VDS पर डेटाबेस से जुड़ने के दो तरीके: SSH टनल और प्रतिबंधों के साथ खुला पोर्ट। क्या चुनें और कैसे जाँचें।
23 अगस्त 2026 को अपडेट किया गया
0.0.0.0 पर सुन रहा और पासवर्ड root वाला डेटाबेस सिर्फ़ पहले स्कैन तक ही बचता है — और पूरी एड्रेस रेंज लगातार स्कैन होती रहती है। साथ ही, लैपटॉप से क्लाइंट के ज़रिए डेटाबेस से कनेक्ट करना सुविधाजनक और अक्सर ज़रूरी होता है। दो तरीके हैं, और सिर्फ़ एक में कोई नुकसान नहीं है।
तरीका 1: SSH टनल (सिफ़ारिश की जाती है)
डेटाबेस 127.0.0.1 पर ही बाइंड रहता है, और बाहर सिर्फ़ SSH खुला रहता है। अपने कंप्यूटर पर:
ssh -L 5433:127.0.0.1:5432 root@YOUR_ADDRESS -N
ssh -L 3307:127.0.0.1:3306 root@YOUR_ADDRESS -N
अब DBeaver, TablePlus या psql में 127.0.0.1:5433 पर कनेक्ट करें। डेटाबेस की नज़र से यह एक लोकल कनेक्शन जैसा दिखता है।
ज़्यादातर क्लाइंट खुद टनल सेट कर सकते हैं: कनेक्शन सेटिंग्स में “SSH” टैब होता है। पैनल के “Overview” से मशीन का एड्रेस /hosting/vds/m/<id> और अपनी key डालें।
इस तरीके का फ़ायदा: आपको डेटाबेस या फ़ायरवॉल कॉन्फ़िगरेशन में कुछ भी बदलने की ज़रूरत नहीं।
तरीका 2: प्रतिबंधों के साथ खुला पोर्ट
यह आख़िरी उपाय है — तब, जब कोई बाहरी सर्विस ज्ञात स्टैटिक एड्रेस से कनेक्ट करती हो। नीचे का हर कदम ज़रूरी है:
ufw allow from 203.0.113.10 to any port 5432 proto tcp
PostgreSQL के लिए: listen_addresses = '*' और pg_hba.conf में लाइन hostssl all all 203.0.113.10/32 scram-sha-256। MySQL के लिए: bind-address = 0.0.0.0 और किसी ख़ास एड्रेस से बाइंड किया गया यूज़र:
CREATE USER 'app'@'203.0.113.10' IDENTIFIED BY 'long-password';
GRANT SELECT, INSERT, UPDATE, DELETE ON shop.* TO 'app'@'203.0.113.10';
TLS के बिना ऐसा कनेक्शन डेटा प्लेन टेक्स्ट में भेजता है। सोर्स बताए बिना ufw allow 5432 का मतलब ठीक वही है — “इसे पूरे इंटरनेट के लिए खोल देना”।
जाँच
किसी दूसरी मशीन से:
nmap -Pn -p 3306,5432,6379,27017 YOUR_ADDRESS
अपेक्षित जवाब सभी पोर्ट पर filtered या closed है। लोकल पर देखें कि क्या और कहाँ सुन रहा है:
ss -tulpn | grep -E '3306|5432|6379'
आम गलतियाँ
| लक्षण | कारण |
|---|---|
| क्लाइंट टनल से कनेक्ट नहीं होता | लोकल पोर्ट भरा हुआ है — कोई दूसरा चुनें |
Host ... is not allowed to connect | MySQL यूज़र localhost से बाइंड है |
no pg_hba.conf entry for host | आपके एड्रेस के लिए कोई नियम नहीं है |
| पोर्ट खुला है पर कोई जवाब नहीं | डेटाबेस सिर्फ़ 127.0.0.1 पर सुन रहा है |
| काम किया, फिर बंद हो गया | आपका प्रोवाइडर डायनैमिक एड्रेस देता है — टनल के पक्ष में एक और दलील |
मशीनों में IPv6 नहीं है, और दूसरा एड्रेस भी नहीं। “Overview” से मिले एकमात्र पब्लिक IPv4 एड्रेस के लिए सारे नियम लिखें — दो स्टैक के साथ कोई उलझन नहीं होगी।