การติดตั้งเซิร์ฟเวอร์ mysql ในสคริปต์เชลล์ bootstrap vagrant (จะข้ามการตั้งค่าได้อย่างไร)


16

ฉันลองติดตั้ง mysql-server บนเครื่องเสมือน Vagrant Ubuntu 12.04 LTS ของฉัน เมื่อฉันทำเช่นนั้นการตั้งค่าอัตโนมัติจะเริ่มขึ้น ฉันเห็นสิ่งนี้ในผลลัพธ์ของ Vagrant:

แม้ว่าจะไม่ได้รับคำแนะนำ แต่อย่างใดขอแนะนำให้คุณตั้งรหัสผ่าน "สำหรับผู้ใช้" root "ของผู้ดูแลระบบ MySQL ถ้าฟิลด์นี้เว้นว่างไว้รหัสผ่านจะไม่ถูกเปลี่ยน││││รหัสผ่านใหม่สำหรับ ผู้ใช้ MySQL "root"

หลังจากนั้นข้อความเอาต์พุตจะยุ่งเหยิง - ± ├⎺ ⎼␊⎻┌▒␌␊ ┌␋␉⎽─┌␋├␊3-0 3.7.9-2┤␉┤┼├┤1 (┤⎽␋┼± ...แต่ค่อนข้างยาวและเต็มไปด้วยสีเขียวและสีแดงดังนั้นฉันจึงเชื่อว่าส่วนที่เหลือของการติดตั้งจะเสร็จสมบูรณ์

แต่ฉันสามารถยืนยันการขาดการติดตั้งหลังจาก:

sudo apt-get install --just-print mysql-server-5.5 
...
The following NEW packages will be installed:
  mysql-server-5.5

ฉันจะส่งสัญญาณที่ถูกต้องผ่านเชลล์สคริปต์เพื่อกำหนดค่าเซิร์ฟเวอร์ MYSQL ได้อย่างไร? หรือถ้าฉันทำไม่ได้ฉันจะหยุดการเปิดตัวการกำหนดค่าอัตโนมัติหรือฆ่าการตั้งค่าเมื่อเปิดตัวในขณะที่ยังคงมีการติดตั้งแพคเกจ?


หากการติดตั้งที่เหลือเสร็จสมบูรณ์จะไม่อนุญาตให้คุณติดตั้งอีกครั้ง คุณลองตั้งรหัสผ่านก่อนการติดตั้งหรือไม่?
Anthon

@Athon ขออภัยฉันไม่คิดว่าฉันจะอธิบายสิ่งนี้ได้ดีในโพสต์ของฉัน: ฉันสามารถกำหนดค่าทั้งหมดนี้ได้ด้วยตนเอง แต่เป้าหมายของฉันคือตั้งค่าอัตโนมัติให้มากที่สุดเท่าที่จะทำได้ และฉันมีหลายขั้นตอนหลังจากนี้ขึ้นอยู่กับการติดตั้ง mysql (เช่นการติดตั้ง rvm เป็นต้น)
Sam

ยกเว้นปัญหาที่เกิดจากระบบที่ไม่สะอาด (ลองติดตั้งในการตั้งค่าเครื่องเสมือนใหม่ทั้งหมด) ดูเหมือนว่าจะมีปัญหากับแพ็คเกจตัวเอง ในกรณีเช่นนี้บางครั้งฉันได้ติดตั้งไฟล์การติดตั้ง (ไม่ใช่การสร้างใหม่อย่างสมบูรณ์เพียงแยก / เปลี่ยน / รวมกัน) และให้บริการจากที่เก็บในเครื่อง
Anthon

@Athon: / ฉันหวังว่าจะหาวิธีแก้ปัญหาเช่น a) แพ็คเกจเซิร์ฟเวอร์ MYSQL มีอยู่ที่ไม่เปิดตัวช่วยสร้างการกำหนดค่าหรือ b) โดยอัตโนมัติมีวิธี bash-y เพื่อดักจับการเปิดตัวเหล่านี้ ( apt-get install mysql-server | some_trap_cmd >> some.file) ฟังดูเหมือนอาจจะไม่มีเรื่องแบบนั้น?
Sam

ปัญหาคือการที่สคริปต์ apt-get รันอยู่ในไฟล์ตัวติดตั้งคุณจะไม่ดักจับกับสิ่งเหล่านั้นเว้นแต่ว่าคุณจะทำการแก้ไขสคริปต์ คุณสามารถดู 5.6 mysql และติดตั้งจากlaunchpadแต่นั่นอาจสร้างปัญหาในการดึงการอ้างอิงทั้งหมด แต่อาจจะเกิดปัญหาการติดตั้ง
Anthon

คำตอบ:


29

คุณสามารถตั้งค่ารหัสผ่านรูทของ MySQL ในไฟล์บูทสแตรปของคุณโดยเพิ่มคำสั่ง debconf-set-selections ก่อนที่จะทำการติดตั้ง apt-get

#!/usr/bin/env bash

debconf-set-selections <<< 'mysql-server mysql-server/root_password password MySuperPassword'
debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password MySuperPassword'
apt-get update
apt-get install -y mysql-server

ฉันคิดว่านี่จะทำงานบนระบบที่ใช้เดเบียน ฉันใช้มันทุกวันกล่องถูกสร้างขึ้นโดยอัตโนมัติอย่างสมบูรณ์


1
! น่ากลัว ฉันไม่ทราบคำสั่งนี้
AlvaroAV

1
ฉันไม่มีตัวdebconf-set-selectionsตน มันทำงานได้อย่างสมบูรณ์แบบ ขอขอบคุณ!
แซม

3

คุณอาจต้องการตรวจสอบPuppet - มันยอดเยี่ยมสำหรับการติดตั้งและกำหนดค่าซอฟต์แวร์โดยอัตโนมัติ นอกจากนี้ยังมีโมดูล MySQLแต่ฉันไม่ได้ลอง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.