Instal skrip MySQL di Ubuntu

23

Saya perlu menulis skrip yang akan membangun server saya dari instalasi server Ubuntu yang baru. Di antara hal-hal seperti Apache dan PHP perlu menginstal MySQL. Satu-satunya masalah di sini adalah ketika saya menginstal MySQL dengan apt-get, di beberapa titik instalasi akan memunculkan dialog yang memungkinkan saya untuk mengetik kata sandi root saya. Yaitu, interaksi manusia diperlukan.

Bagaimana saya bisa melewati layar ini selama instalasi dan menghindari interaksi manusia saat masih menggunakan apt-get untuk menginstal MySQL?

Luke
sumber
Lihat juga stackoverflow.com/questions/1202347/...
Jamieson Becker

Jawaban:

31

Anda perlu melakukan preseed pada basis data debconf. debconf perlu diinstal terlebih dahulu sebelum Anda mencoba ini.

Versi mysql dan ubuntu dapat mengubah baris:

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

Sebagai contoh, Anda membuat ini membutuhkan:

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
Steven
sumber
Ya, itu berfungsi, tetapi setelah diinstal saya tidak bisa login ke mysql (mysql -u root, ini menampilkan izin ditolak).
Samnang
3
Bagaimanamysql -u root -p
PhilT
Juga perlu tanda 'terlihat' seperti yang ditunjukkan di bawah ini untuk menonaktifkan menampilkan kata sandi atau Anda akan diminta kata sandi lagi.
Jamieson Becker
5

Walaupun FAI dan sistem serupa membantu dalam lingkungan perusahaan, (dan dia harus tahu tentang mereka), sayangnya mereka bukan obat mujarab.

Sebagai contoh, bagaimana jika dia bekerja pada mesin jarak jauh, mungkin host, server sewaan, server colocated tanpa jaringan tepercaya atau berdedikasi, atau lingkungan cloud seperti EC2? Netboot PXE tidak akan berfungsi di sana. Namun, Wayang dan Koki tampaknya merupakan alat yang lebih umum yang dapat membantunya.

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

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

Anda bisa mendapatkan nilai yang benar dari DB debconf pada sistem yang sudah diatur. Teknik ini memungkinkan Anda menempelkan semuanya dalam satu skrip shell. Misalnya, dari /var/cache/debconf/passwords.dat (perhatikan kemampuan untuk bekerja dengan 5.0 pada Debian dan 5.1 dan Ubuntu, entri tambahan tidak melukai apa pun):

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

Metode lain, mungkin lebih mudah: (kumpulkan jawaban dari debconf-get-selection atau debconf-show dari paket debconf-utils):

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

Setelah Anda menjalankan debconf-set-choices, periksa jawaban Anda: cat /var/cache/debconf/passwords.dat

Dan, saat pengujian, pastikan untuk menghapus dan membersihkan semua basis data (terutama basis data mysql, tempat ini disimpan) dan memperbaiki DB konfigurasi Anda jika mereka rusak:

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

Beberapa tips dengan ini: 1) Anda HARUS memiliki bendera yang terlihat dan kata sandi _again. 2) Anda HARUS tidak menaruh tanda kutip di sekitar kata sandi. Ini akan masuk ke kueri MySQL tanpa tanda kutip, jadi Anda harus mengutip sendiri jika diperlukan. Itu juga berarti tidak ada spasi (saya pikir) 3) Jika Anda memiliki masalah, lakukan pra-persiapan dengan tangan kemudian jalankan sendiri instalasi MySQL (di terminal normal / tty) dan lihat apa yang dikatakan debconf kepada Anda. Ini akan memberi tahu Anda peringatan dan kesalahan di sana.

Jamieson Becker
sumber
3

Jika Anda memiliki beberapa server yang perlu Anda bangun kembali, saya sangat menyarankan Anda melihat sesuatu seperti Wayang daripada menulis skrip shell. Wayang memiliki bahasa deskriptif, jadi Anda menentukan bagaimana Anda ingin sistem terlihat, bukan bagaimana mendapatkannya di sana. Jenis paket memiliki opsi responsefile yang memungkinkan Anda untuk menentukan jawaban debconf dalam jawaban Steven.

David Pashley
sumber
1

Bolehkah saya juga menyarankan Anda untuk mengotomatiskan proses pementasan server dari setrika mentah?

FAI saat ini memiliki profil untuk menginstal sebagian besar sistem berbasis Debian utama, termasuk Ubuntu, dari jaringan. Ini tentu saja hanya perpanjangan dari jawaban boneka, yang merupakan perpanjangan dari jawaban debconf.

Kombinasi pementasan dari FAI, kemudian menyesuaikan dengan boneka ke peran server (di mana boneka akan menggunakan alat yang tepat untuk sistem Anda, seperti debconf untuk Debian (-sukai) agak otomatis), agak populer hari ini dan seharusnya tidak terlalu sulit untuk menemukan contoh yang cocok dengan apa yang ingin Anda lakukan lebih dekat.

Manfaat tambahan utama dari memiliki server staging / konfigurasi adalah bahwa ini juga merupakan tempat yang logis untuk menjaga konfigurasi versi terkontrol, misalnya dengan git (yang memiliki manfaat menamai status repositori dengan checksum, sehingga Anda aman terhadap korupsi sebagai selama Anda mencatat checksum yang tepat ke bawah), untuk proses yang benar-benar bersih dan dapat direproduksi.

Bernd Haug
sumber