Google के cloud-sql-proxy (Cloud SQL Auth Proxy) का उपयोग करके DB में लॉग इन करने तक

5 min

language: ja bn en es hi pt ru zh-cn zh-tw

नमस्ते, मैं अक्षम हूँ।
एक पल के लिए cloud-sql-proxy के माध्यम से DB से कनेक्ट करने की कोशिश करते समय मैं लड़खड़ा गया, इसलिए मैं इसे एक नोट के रूप में रख रहा हूँ।

आवश्यक बाइनरी इंस्टॉलेशन

cloud-sql-proxy निष्पादन योग्य बाइनरी को सहेजें और पथ सेट करें

सबसे पहले, आपको cloud-sql-proxy के लिए निष्पादन योग्य बाइनरी की आवश्यकता है।
क्योंकि यह brew जैसे पैकेजों में मौजूद नहीं है, आपको Google की साइट से प्रत्येक निर्देश सेट के अनुसार निर्मित निष्पादन योग्य बाइनरी प्राप्त करने की आवश्यकता है

curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.2/cloud-sql-proxy.darwin.arm64
chmod +x cloud-sql-proxy
sudo mv cloud-sql-proxy /usr/local/bin
which cloud-sql-proxy

हालांकि बहुत से लोग ऐसा नहीं करते हैं, homebrew के साथ स्थापित निष्पादन योग्य बाइनरी /opt/homebrew/bin/ के तहत रखे जाते हैं, लेकिन इस बार, यह एक अद्वितीय बाइनरी है जिसे उपयोगकर्ता द्वारा स्थापित किया गया है, और FreeBSD का एक फोर्क MacOS के मामले में, /usr/local/bin बेहतर लगता है, इसलिए मैंने इसे वहाँ रखा।

MySQL बाइनरी स्थापित करें

ऐसा लगता है कि, यदि आप बिना किसी संस्करण विनिर्देश के brew install mysql करते हैं, तो बाइनरी गायब हो सकती है या संस्करण बहुत पुराना हो सकता है, जिससे कनेक्शन त्रुटि हो सकती है, इसलिए इसे नीचे स्थापित करें।
इस संबंध में, मेरे वरिष्ठ के कारण यह तुरंत हल हो गया।

brew install mysql-client@8.4

और फिर
यदि पथ सेट नहीं है, तो इसे नीचे खोजें और एक सिंबॉलिक लिंक बनाएं।

find /opt/homebrew -name "mysql*"
ln -s /मिला हुआ/mysql_बाइनरी_का_पथ /opt/homebrew/bin/mysql

कनेक्ट करने के लिए DB जानकारी प्राप्त करना

पर्यावरण की पुष्टि और प्रमाणीकरण

मान लें कि आपने पहले ही लॉगिन प्रक्रिया पूरी कर ली है।

gcloud auth login
gcloud auth application-default login

नीचे एक प्रोजेक्ट निर्दिष्ट करें।

gcloud config set project प्रोजेक्ट_आईडी

आप नीचे प्रोजेक्ट की पुष्टि कर सकते हैं।

gcloud config get-value project

और फिर नीचे DB के लिए कनेक्शन नाम की पुष्टि करें।

gcloud sql instances describe डीबी_इंस्टेंस_नाम | grep "^connectionName:" | awk '{print $2}'

cloud-sql-proxy के माध्यम से कनेक्ट करें

यह एक तंत्र की बात है, लेकिन यह cloud-sql-proxy DB को प्रॉक्सी करता है।
कल्पना कीजिए कि यदि आप VM के भीतर मौजूद DB तक पहुँचने का प्रयास करते हैं, तो आपको एक बार उस OS पर SSH करना होगा और DB सर्वर में ही लॉगिन प्रक्रिया की आवश्यकता होगी, लेकिन इस प्रॉक्सी को करके, यह Cloud SQL में मौजूद DB सर्वर को लोकलहोस्ट पर Listen करने की अनुमति देता है।
यदि DB पोर्ट खुला है, तो मुझे लगता है कि आप सीधे DB सर्वर से कनेक्ट कर सकते हैं, लेकिन मुझे नहीं लगता कि कोई भी DB सर्वर को ऐसी असुरक्षित स्थिति में स्थापित करेगा।
इसलिए, यदि आप यथासंभव सुरक्षित और आसानी से कनेक्ट करना चाहते हैं, तो मुझे लगता है कि यह DB को प्रॉक्सी करने का निर्णय था।

तो, आइए उस DB कनेक्शन नाम को निर्दिष्ट करें जिसकी हमने अभी पुष्टि की है।

cloud-sql-proxy --port 3306 डीबी_कनेक्शन_नाम

चूंकि उपरोक्त MySQL के लिए है, यदि यह PostgreSQL या कुछ और है, तो आपको एक अलग पोर्ट निर्दिष्ट करने की आवश्यकता होगी और आवश्यक बाइनरी भी बदल जाएगी, इसलिए क्या इसे तदनुसार बदलने की आवश्यकता होगी?

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

mysql --user="डीबी_उपयोगकर्ता" --password="डीबी_उपयोगकर्ता_का_पासवर्ड" -h 127.0.0.1

फिर मिलेंगे।
सादर।

Related Posts