एक स्क्रिप्ट के भीतर mysql बाइंड-पता बदलना


10

शेल स्क्रिप्ट से my.cnf में mysql बाइंड-एड्रेस को बदलने का सबसे अच्छा तरीका क्या होगा? क्या माइस्क्लाडमिन जैसे उपकरण का उपयोग करने का एक तरीका है या मुझे सीड का उपयोग करना चाहिए या क्या मुझे इसे सीधे my.cnf में जोड़ना चाहिए और आशा है कि दूसरी प्रविष्टि पहले (यह एक बीमार लग रहा है) को ओवरराइट करती है। मैं योनि के लिए एक सरल शेल प्रोफ़ेशनल लिखने की कोशिश करता हूं जो vm के बाहर से कनेक्शन की अनुमति देने के लिए mysql-server को स्थापित करने के बाद चलता है।

जवाबों:


17

@Nonsenz द्वारा कही गई बातों को जोड़ते हुए, यदि आप puphpet.com की प्रोविजनिंग स्क्रिप्ट का उपयोग करते हैं तो आप / puphpet / files / स्टार्टअप-हमेशा फ़ोल्डर में एक bash फ़ाइल जोड़ सकते हैं और अपने सभी आदेशों को वहां रख सकते हैं। किसी भी समय योनि शुरू होती है या पुनः लोड होती है, इसे स्क्रिप्ट कहेंगे:

mysql.sh

#!/bin/bash

echo "Updating mysql configs in /etc/mysql/my.cnf."

if [ 'sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf' ]; then

    echo "Updated mysql bind address in /etc/mysql/my.cnf to 0.0.0.0 to allow external connections."

    sudo /etc/init.d/mysql stop
    sudo /etc/init.d/mysql start

fi

इससे भी बेहतर (क्लीनर आउटपुट को सक्षम करने के लिए)

mysql.sh

#!/bin/bash

echo "Updating mysql configs in /etc/mysql/my.cnf."
sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
echo "Updated mysql bind address in /etc/mysql/my.cnf to 0.0.0.0 to allow external connections."
sudo service mysql stop
sudo service mysql start

इसने मेरी IDE (PhpStorm) को सीधे मेरी गेस्ट मशीन पर डेटाबेस के माध्यम से जुड़ने में सक्षम किया। बेशक मैंने अतिथि mysql को '%' तक उपयोगकर्ता की पहुंच प्रदान की और मेजबान को पोर्ट पर 3306 (मेजबान को बंदरगाह) (3309) पर अग्रेषित किया। पहुँच अनुदान इस फ़ाइल में भी किया जा सकता है।

यहां तक ​​कि Better'er (mysql execute add in)

mysql.sh

#!/bin/bash

echo "Updating mysql configs in /etc/mysql/my.cnf."
sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
echo "Updated mysql bind address in /etc/mysql/my.cnf to 0.0.0.0 to allow external connections."

echo "Assigning mysql user user1 access on %."
sudo mysql -u user1 -pyourpassword --execute "GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%' IDENTIFIED BY 'yourpassword' with GRANT OPTION; FLUSH PRIVILEGES;" yourdatabase
echo "Assigned mysql user user1 access on all hosts."

sudo service mysql stop
sudo service mysql start

नीचे की पटकथा मेरे लिए कुछ छोटे बिट्स (CentOS 6.5 बॉक्स) के लिए एकदम सही थी - sudoजिसके परिणामस्वरूप "क्षमा करें, आपके पास एक ट्टी" त्रुटि होनी चाहिए (बयानों से 'sudo' को हटाकर) और मेरी MySQL सेवा का उपयोग करके पुनः आरंभ किया गया था /etc/init.d/mysqld stopऔर /etc/init.d/mysqld start। उन दोनों स्क्रिप्ट के साथ त्रुटियों के बजाय सिर्फ CentOS quirks हो सकता है।
एडम वेस्टब्रुक

9

ऐसा लगता है कि इस संदर्भ में सेड सबसे आसान तरीका है (एक साफ इंस्टॉल के बाद):

sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf 

2
augtool -s set '/files/etc/mysql/my.cnf/target[ . = "mysqld"]/bind-address 0.0.0.0'

उबंटू पैकेज को 'अगेस-टूल्स' कहा जाता है


इस उत्तर को कुछ और स्पष्टीकरण की आवश्यकता है।
कास्परड सिप

ऑगेस का उपयोग करना (जैसा कि अन्य उत्तरों में से एक में उल्लेख किया गया है) कॉन्फ़िगरेशन फ़ाइलों के हेरफेर की अनुमति देता है। यह उदाहरण दिखाता है कि यह कैसे किया जाता है।
पीटर चिल्ड्स

इस उत्तर का उपयोग करने के प्रयास से: -s"ऑटो किसी भी अद्यतन को बचाने" है। setइस कार्रवाई को इस लाइन के साथ लिया जाएगा। /files/etc/mysql/my.cnfकौन सा हिस्सा / फ़ाइल ऑगस्ट काम करेगा (यह सभी / आदि लोड करता है)। /targetडिकोड किए गए मानों का (? सरणी?) है। [ . = "mysqld"]जो भी लक्ष्य संख्या का चयन करता है उसका मूल्य "mysqld" होता है। bind-address"mysqld" अनुभाग में बाइंड-एड्रेस फ़ील्ड है, और अंतरिक्ष के बाद 0.0.0.0का मूल्य वह मान है जो इसे सेट किया जाएगा।
माइक लुत्ज़

0

ऐसा लगता है जैसे आप ऑगेस की तलाश कर रहे हैं ।

परियोजना पृष्ठ यहाँ है और कुछ प्रलेखन और उदाहरण यहाँ हैं। MySQL स्टॉक लेंस पेज पर शामिल है, लेकिन दुर्भाग्य से एक 404 पृष्ठ पर अब प्रलेखन लिंक।

यहाँ कठपुतली के भीतर इसका उपयोग करने के कुछ उदाहरण भी हैं


दिलचस्प लग रहा है। लेकिन मुझे लगता है कि इस तरह से कुछ का उपयोग करने से पहले बस मुझे पता होना चाहिए कि मैं sed के साथ छड़ी के साथ :-) :-)
nonsenz

कठपुतलीबास / inifile भी काम कर सकता है, एक बार जब आप योनि से छुटकारा पाने और पेशेवर विन्यास प्रबंधन के लिए कदम ...
माइकल हैम्पटन

1
यदि सेफ़ाइल में सेक्शन मायने रखता है, तो सेड एप्रोच तभी काम करेगा जब एंट्री पहले से मौजूद हो। ऑगस दृष्टिकोण दृष्टिकोण की परवाह किए बिना काम करेगा, क्योंकि यह प्रविष्टि को सही स्थिति में रखेगा।
.एफ़िंक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.