Ubuntu'da MySQL'in script kurulumu


23

Sunucumu yeni bir Ubuntu sunucu kurulumundan kuracak bir betik yazmam gerekiyor. Apache ve PHP gibi şeyler arasında MySQL'in kurulması gerekiyor. Buradaki tek sorun, apt-get ile MySQL'i kurduğumda, bir noktada kurulumun kök şifremi yazmama izin veren bir iletişim kutusu açması. Yani, insan etkileşimi gereklidir.

Kurulum sırasında bu ekranı nasıl devre dışı bırakabilirim ve hala MySQL'i kurmak için apt-get kullanırken insan etkileşimi nasıl önlenebilir?


Yanıtlar:


31

Debconf veritabanını önceden ayarlamalısınız. Bunu denemeden önce debconf'un yüklenmesi gerekiyor.

MySQL ve Ubuntu sürümü bu satırı değiştirebilir:

echo mysql-server mysql-server/root_password select PASSWORD | debconf-set-selections
echo mysql-server mysql-server/root_password_again select PASSWORD | debconf-set-selections

Örneğin bunun yerine buna ihtiyacınız var:

echo mysql-server-5.0 mysql-server/root_password password PASSWORD | debconf-set-selections
echo mysql-server-5.0 mysql-server/root_password_again password PASSWORD | debconf-set-selections

Evet, çalışıyor, ancak yüklendikten sonra mysql'ye giriş yapamıyorum (mysql -u root, izin verilmedi).
Samnang

3
Peki yamysql -u root -p
PhilT

Ayrıca, şifre istemini göstermeyi devre dışı bırakmak için aşağıdaki 'işaretlenmiş' bayrağına ihtiyacınız var, yoksa sizden tekrar şifre istenir.
Jamieson Becker

5

FAI ve benzeri sistemler işletme ortamında yardımcı olurken (ve onlar hakkında bilgi sahibi olmalıdır), ne yazık ki her derde deva değiller.

Örneğin, uzaktaki makineler üzerinde, belki de barındırılan, kiralanan sunucular, güvenilir veya özel bir ağa sahip olmayan ortak sunucular veya EC2 gibi bir bulut ortamı üzerinde çalışıyorsa ne olur? Orada hiçbir tür PXE ağı yok. Kukla ve Şef, ona yardım edebilecek daha genel amaçlı araçlar gibi görünüyor.

cat << EOF | DEBIAN_FRONTEND=noninteractive DEBCONF_DB_FALLBACK=Pipe /usr/bin/apt-get install somepackage

Name: ...
Template: ...
Value: ...
Owners: ...
Variables:
   ....
   ....
EOF

Daha önce kurulmuş bir sistemde debconf DB'den doğru değerleri alabilirsiniz. Bu teknik, her şeyi tek bir kabuk betiğine yapıştırmanıza izin verir. Örneğin, /var/cache/debconf/passwords.dat adresinden (Debian ve 5.1 ve Ubuntu'daki 5.0'larla birlikte çalışabilme yeteneğine dikkat edin, fazladan girişler hiçbir şeye zarar vermez):

cat << EOF | DEBIAN_FRONTEND=noninteractive DEBCONF_DB_FALLBACK=Pipe /usr/bin/apt-get -qq -y install mysql-server
Name: mysql-server/root_password
Template: mysql-server/root_password
Value: YOURPASSWORD
Owners: mysql-server-5.1
Flags: seen

Name: mysql-server/root_password_again
Template: mysql-server/root_password_again
Value: YOURPASSWORD
Owners: mysql-server-5.1
Flags: seen

Name: mysql-server/root_password
Template: mysql-server/root_password
Value: YOURPASSWORD
Owners: mysql-server-5.0
Flags: seen

Name: mysql-server/root_password_again
Template: mysql-server/root_password_again
Value: YOURPASSWORD
Owners: mysql-server-5.0
Flags: seen

EOF

Başka bir yöntem, belki de daha kolay: (debconf-get-selection'dan veya debconf-show'dan debconf-utils paketinden gelen yanıtları toplayın):

echo "Installing MySQL 5.0.."
sudo apt-get install -qqy debconf-utils
cat << EOF | debconf-set-selections
mysql-server-5.0 mysql-server/root_password password YOURPASSWORD
mysql-server-5.0 mysql-server/root_password_again password YOURPASSWORD
mysql-server-5.0 mysql-server/root_password seen true
mysql-server-5.0 mysql-server/root_password_again seen true
EOF
/usr/bin/apt-get -y install mysql-server-5.0 mysql-server

Debconf-set-seçimleri yaptıktan sonra cevaplarınızı kontrol edin: cat /var/cache/debconf/passwords.dat

Ve test sırasında, tüm veritabanlarını (özellikle bunun depolandığı mysql veritabanını) kaldırdığınızdan ve temizlediğinizden ve config DB'nizi bozduklarında düzeltdiğinizden emin olun:

apt-get --purge remove mysql-server*; /usr/share/debconf/fix_db.pl 

Bununla ilgili birkaç ipucu: 1) Görülen bayrağa ve _again şifresine sahip olmalısınız. 2) Şifrenin etrafına tırnak koymamanız GEREKİR. Bir MySQL sorgusundan alıntı yapılmayacaktır, bu yüzden gerekirse kendiniz alıntı yapmanız gerekir. Bu da boşluk olmadığı anlamına gelir (bence) 3) Sorun yaşarsanız, önceden ayarlamayı elle yapın ve MySQL kurulumunu doğrudan kendiniz çalıştırın (normal bir terminalde / tty'de) ve debconf'un size ne söylediğini görün. Size orada uyarıları ve hataları söyleyecektir.


3

Yeniden kurmanız gereken birden fazla sunucunuz varsa, kabuk komut dosyası yazmak yerine Kukla gibi bir şeye bakmanızı şiddetle tavsiye ederim . Kuklanın tanımlayıcı bir dili var, oraya nasıl gideceğinizi değil, sistemin nasıl görünmesini istediğinizi siz belirlersiniz. Paket türü, Steven'ın cevabındaki debconf cevaplarını tanımlamanıza izin veren bir cevap dosyası seçeneğine sahiptir.


1

Ayrıca sunucu hazırlama işlemini ham demire göre otomatikleştirmenizi önerebilir miyim?

FAI günümüzde, Ubuntu da dahil olmak üzere Debian tabanlı çoğu sistemi ağdan kurmak için profillere sahiptir. Bu, elbette, kukla cevabının bir uzantısıdır, bu da debconf cevabının bir uzantısıdır.

FAI'den evreleme, daha sonra kukla ile sunucu rollerine göre uyarlama (kukla sisteminiz için uygun araçları kullanacaktır, burada otomatik olarak Debian (-likes) için debconf gibi), bu günlerde oldukça popülerdir ve Yakından yapmak istediklerinizle eşleşen örnekleri bulmak zor.

Bir aşamalandırma / konfigürasyon sunucusuna sahip olmanın en büyük avantajlarından biri, konfigürasyonunuzu kontrol altında tutmanın mantıklı bir yeri olması, örneğin git ile (bu, checksum ile depo durumlarını adlandırma yararına sahiptir, böylece yolsuzluğa karşı güvende olursunuz) doğru sağlama toplamlarını not ettiğiniz sürece), gerçekten temiz ve tekrarlanabilir bir işlem için.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.