2009-07-29 6 views
21

मैं उबंटू पर MySQL स्थापित करने के लिए एक सरल बैश स्क्रिप्ट लिख रहा हूं।mysql इंस्टॉल करने के लिए मैं बैश स्क्रिप्ट से योग्यता के लिए पासवर्ड कैसे पास कर सकता हूं?

#!/bin/bash 
apt-get update 

# Install MySQL5 
aptitude -y install mysql-server mysql-client libmysqlclient15-dev 

हालांकि MySQL पासवर्ड और पुष्टि के लिए संकेत देता है। मैं रूट पासवर्ड के साथ कैसे पास करूं? क्या मैं एक गूंज का उपयोग कर सकता हूं?

उत्तर

2

, expect

यह सबसे इंटरैक्टिव सत्र स्वचालित करने के लिए इस्तेमाल किया जा सकता का उपयोग कर इस पर गौर हालांकि मैं एक रूट पासवर्ड

1

प्रयोग नहीं करेंगे अपेक्षा शायद overkill है। डेबियन या उबंटू एडमिन फ़ोरम में से किसी एक को देखें - एफएआई एट अल जैसी चीजें डेबॉन्फ सवालों के लिए लंबे समय से उपयोग की जाती हैं। आप यहां भी इसका उपयोग करने में सक्षम होना चाहिए।

आखिरकार, आप शायद स्वयं को या अन्य फ्रंटेंड प्राप्त करने का भी उपयोग कर सकते हैं।

12

उम्मीद पर टिप के लिए धन्यवाद। मुझे उबंटू एडमिन फ़ोरम खोजकर कुछ भी नहीं मिला, इसलिए मैं उम्मीद के साथ गया। जैसा कि आप इस पोस्ट के टाइमस्टैम्प द्वारा देख सकते हैं, इसे काम करने में मुझे 3 घंटे लग गए। यहाँ कोड है, मुझे आशा है कि यह मदद कर सकता है किसी को:

#!/bin/bash 
apt-get update 
apt-get install expect 

VAR=$(expect -c ' 
spawn apt-get -y install mysql-server 
expect "New password for the MySQL \"root\" user:" 
send "PasswordHere\r" 
expect "Repeat password for the MySQL \"root\" user:" 
send "PasswordHere\r" 
expect eof 
') 

echo "$VAR" 

apt-get -y install mysql-client libmysqlclient15-dev 

#For some reason important to restart - otherwise possible errors 

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

यह करने के लिए सबसे आसान तरीका है DEBIAN_FRONTEND वातावरण चर और योग्यता -q और -y झंडे का उपयोग करना है:

sudo DEBIAN_FRONTEND=noninteractive aptitude install -q -y mysql-server 

या अधिक सामान्य रूप से, यह मानते हुए sudo पासवर्ड कुछ है कि कैसे के लिए catered कर दिया गया है

#!/bin/bash 
INSTALLER_LOG=/var/log/my-installer.log 

installnoninteractive(){ 
    sudo bash -c "DEBIAN_FRONTEND=noninteractive aptitude install -q -y $* >> $INSTALLER_LOG" 
} 

installnoninteractive mysql-server 
+1

मैंने 'उम्मीद' दृष्टिकोण की कोशिश की, लेकिन सूक्ष्म उद्धरण मुद्दे में चल रहा था रों। 'DEBIAN_FRONTEND = noninteractive' चाल ठीक वही था जो मैं ढूंढ रहा था। इसे 'mysqladmin -u रूट पासवर्ड YOUR_DB_PASSWORD' के साथ फ़ॉलो करें और आप एक जिफ्फी में घर हैं। –

+0

+1 जो वास्तव में उबंटू 12.04 – Automatico

7

इस नए सर्वर के लिए मेरी सेटअप स्क्रिप्ट से एक अंश है। आपको पासवर्ड को छोड़कर इसे शब्द-के-शब्द की प्रतिलिपि बनाने में सक्षम होना चाहिए।

यदि आप पहले से रूट नहीं हैं तो आपको इसे सुडो का उपयोग करके चलाने की आवश्यकता होगी।

#!/bin/bash 
export DEBIAN_FRONTEND=noninteractive 
apt-get -q -y install mysql-server 
echo "Give mysql server time to start up before we try to set a password..." 
sleep 5 
mysql -uroot -e <<EOSQL "UPDATE mysql.user SET Password=PASSWORD('yourpasswordhere') WHERE User='root'; FLUSH PRIVILEGES;" 
EOSQL 
echo "Done setting mysql password." 

अन्य उत्तरों ने इसका उपयोग किया है - जो हमेशा सवालों के जवाब देने के लिए उपयुक्त बनाता है। -q कुछ प्रगति संकेतकों को छुपाता है ताकि आप आउटपुट को लॉग में भेज सकें। आप -qq का भी उपयोग कर सकते हैं, जो स्वचालित रूप से आपको एक-एक देता है। यह उपयुक्त पृष्ठ के लिए मैन पेज में है।

<<EOSQL पठनीयता के लिए एक बैश हेरेडोक वाक्यविन्यास है। http://padwasabimasala.posterous.com/non-interactive-scripted-mysql-install-on-ubu

हियरडॉक साथ याद करने की बात यह है कि खाली स्थान के पहले समापन स्ट्रिंग यह टूट जाता है है:

मैं इस आदमी से इस समाधान का हियरडॉक हिस्सा मिला है। तो उस पंक्ति को इंडेंट न करें। हेरेडोक वाक्यविन्यास के बारे में यहां एक पृष्ठ दिया गया है: http://tldp.org/LDP/abs/html/here-docs.html

+0

के साफ इन्सटेल पर काम करता है, यह 'त्रुटि 16 9 8 (28000) देता है: उपयोगकर्ता' रूट '@' लोकहोस्ट ' – user1623521

+0

के लिए एक्सेस अस्वीकृत हो सकता है शायद पहले से ही एक रूट पासवर्ड सेट था? यह स्क्रिप्ट पासवर्ड से प्रमाणीकृत नहीं है क्योंकि mysql में पहले से सेट पासवर्ड नहीं था। आप कमांड लाइन पर प्रदान करने के लिए प्रॉम्प्ट या -p $ PASS को -p जोड़ सकते हैं। – Mnebuerquo

+0

ऐसा नहीं था, मैंने एक स्वच्छ वीएम के साथ प्रयास किया है। मुझे लगता है कि mysql रिक्त होने के लिए पासवर्ड स्वीकार नहीं करता है। – user1623521

15

यह इतना आसान है ..

install mysql on ubuntu without password prompt

sudo debconf-set-selections <<< 'mysql-server-5.1 mysql-server/root_password password your_password' 
sudo debconf-set-selections <<< 'mysql-server-5.1 mysql-server/root_password_again password your_password' 
sudo apt-get -y install mysql-server 

अपने खोल here-strings (zsh, ksh93 और पार्टी उनका समर्थन), उपयोग का समर्थन नहीं करता:

echo ... | sudo debconf-set-selections 
+0

यह वास्तव में अनुशंसित तरीका है यह करने के लिए। स्क्रिप्ट की प्रतीक्षा करें या प्रतीक्षा/सोना सिर्फ कड़वाहट है जो सबसे दुर्भाग्यपूर्ण क्षणों में टूट जाएगा। –

+2

मुझे ओवरराइट करने के लिए आवश्यक सेटिंग नामों के लिए प्रलेखन नहीं मिला। लेकिन मैंने पैकेज को एक बार इंटरैक्टिव रूप से स्थापित किया और सेट किए गए चरों को सूचीबद्ध करने के लिए 'सूडो डेब कॉन्फ-शो माईपीकेजी' का उपयोग किया। उस सूची को देखते हुए, यह स्पष्ट था कि मेरे पासवर्ड के लिए दो पासवर्ड परिवर्तनीय नाम क्या थे। –

2

यह स्क्रिप्ट सफल रहा था जब सुपर उपयोगकर्ता के रूप में शुरू:

#!/bin/bash 

export temp_mysql_password="**********" 
export DEBIAN_FRONTEND=noninteractive 

debconf-set-selections <<< "mysql-server mysql-server/root_password password $temp_mysql_password" 
debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $temp_mysql_password" 
debconf-set-selections <<< "mysql-server-5.6 mysql-server/root_password password $temp_mysql_password" 
debconf-set-selections <<< "mysql-server-5.6 mysql-server/root_password_again password $temp_mysql_password" 

apt-get update 
apt-get -y upgrade 
apt-get -y install mysql-server