Score:1

ทำให้สคริปต์ mysql mysql_secure_installation เป็นอัตโนมัติ แต่ไม่เป็นไปตามที่คาดไว้

ธง ky

mysql เป็น 5.7.34 อูบุนตู 18.04

สคริปต์ที่ฉันเขียน my.sh

#!/usr/bin/คาดหวัง

วางไข่ mysql_secure_installation


คาดหวัง {
             "กด y|Y สำหรับใช่ ปุ่มอื่นๆ สำหรับไม่ใช่" { send "n\r"; exp_ดำเนินการต่อ }
             "รหัสผ่านใหม่" { ส่ง "123456\r"; exp_ดำเนินการต่อ }
             "ป้อนรหัสผ่านใหม่อีกครั้ง" { ส่ง "123456\r"; exp_ดำเนินการต่อ }
             "ลบผู้ใช้ที่ไม่ระบุตัวตน?" { ส่ง "y\r"; exp_ดำเนินการต่อ }
             "ไม่อนุญาตให้รูทเข้าสู่ระบบจากระยะไกล" { ส่ง "n\r"; exp_ดำเนินการต่อ }
             "ลบฐานข้อมูลทดสอบและเข้าถึง" { send "Y\r"; exp_ดำเนินการต่อ }
             "โหลดตารางสิทธิ์ทันที" { ส่ง "Y\r"; exp_ดำเนินการต่อ }
     }

./my.sh

ผลการดำเนินงานมีดังนี้

ทำไมสคริปต์ไม่ทำงานตามที่คาดไว้

root@fa244a50dc06:/# ./my.sh
วางไข่ mysql_secure_installation

การรักษาความปลอดภัยการปรับใช้เซิร์ฟเวอร์ MySQL

การเชื่อมต่อกับ MySQL โดยใช้รหัสผ่านเปล่า

VALIDATE PASSWORD PLUGIN สามารถใช้ทดสอบรหัสผ่านได้
และปรับปรุงความปลอดภัย ตรวจสอบความแข็งแกร่งของรหัสผ่าน
และอนุญาตให้ผู้ใช้ตั้งเฉพาะรหัสผ่านที่เป็น
ปลอดภัยเพียงพอ คุณต้องการตั้งค่าปลั๊กอิน VALIDATE PASSWORD หรือไม่

กด y|Y สำหรับใช่ ปุ่มอื่นๆ สำหรับไม่ใช่: n
โปรดตั้งรหัสผ่านสำหรับรูทที่นี่

รหัสผ่านใหม่:

ป้อนรหัสผ่านใหม่:
ตามค่าเริ่มต้น การติดตั้ง MySQL จะมีผู้ใช้ที่ไม่ระบุตัวตน
อนุญาตให้ทุกคนเข้าสู่ระบบ MySQL โดยไม่ต้องมี
บัญชีผู้ใช้ที่สร้างขึ้นสำหรับพวกเขา สิ่งนี้มีไว้สำหรับ
การทดสอบและเพื่อให้การติดตั้งราบรื่นขึ้นเล็กน้อย
คุณควรลบออกก่อนที่จะย้ายเข้าสู่การผลิต
สิ่งแวดล้อม.

นำผู้ใช้ที่ไม่ระบุชื่อออกไหม (กด y|Y สำหรับใช่ ปุ่มอื่นๆ สำหรับไม่ใช่) : n

 ...ข้ามไป.


โดยปกติแล้วรูทควรได้รับอนุญาตให้เชื่อมต่อเท่านั้น
'โลคัลโฮสต์' สิ่งนี้ทำให้มั่นใจได้ว่าไม่มีใครคาดเดาได้
รหัสผ่านรูทจากเครือข่าย

ไม่อนุญาตให้รูทเข้าสู่ระบบจากระยะไกล? (กด y|Y สำหรับใช่ ปุ่มอื่นๆ สำหรับไม่ใช่) : n

 ...ข้ามไป.
ตามค่าเริ่มต้น MySQL จะมาพร้อมกับฐานข้อมูลชื่อ 'ทดสอบ'
ทุกคนสามารถเข้าถึงได้ สิ่งนี้มีไว้สำหรับการทดสอบเท่านั้น
และควรกำจัดออกก่อนที่จะเข้าสู่การผลิต
สิ่งแวดล้อม.


ลบฐานข้อมูลทดสอบและเข้าถึงได้หรือไม่ (กด y|Y สำหรับใช่ ปุ่มอื่นๆ สำหรับไม่ใช่) : n

 ...ข้ามไป.
การโหลดตารางสิทธิ์ซ้ำจะทำให้แน่ใจได้ว่ามีการเปลี่ยนแปลงทั้งหมด
ที่ทำไปแล้วจะมีผลทันที

โหลดตารางสิทธิ์ใหม่เลยไหม (กด y|Y สำหรับใช่ ปุ่มอื่นๆ สำหรับไม่ใช่) : n

 ...ข้ามไป.
เสร็จเรียบร้อย!

Score:0
ธง ky
#!/usr/bin/คาดหวัง

วางไข่ mysql_secure_installation


คาดหวัง {
             "สามารถใช้ปลั๊กอินรหัสผ่านที่ถูกต้องเพื่อทดสอบรหัสผ่าน" { ส่ง "n\r"; exp_ดำเนินการต่อ }
             "รหัสผ่านใหม่" { ส่ง "123456\r"; exp_ดำเนินการต่อ }
             "ป้อนรหัสผ่านใหม่อีกครั้ง" { ส่ง "123456\r"; exp_ดำเนินการต่อ }
             "ลบผู้ใช้ที่ไม่ระบุตัวตน?" { ส่ง "y\r"; exp_ดำเนินการต่อ }
             "ไม่อนุญาตให้รูทเข้าสู่ระบบจากระยะไกล" { ส่ง "n\r"; exp_ดำเนินการต่อ }
             "ลบฐานข้อมูลทดสอบและเข้าถึง" { send "Y\r"; exp_ดำเนินการต่อ }
             "โหลดตารางสิทธิ์ทันที" { ส่ง "Y\r"; exp_ดำเนินการต่อ }
        }
Score:0
ธง in

บรรทัดแรกในของคุณ คาดหวัง อยู่เหนือสิ่งอื่นใด:

กด y|Y สำหรับใช่ ปุ่มอื่นๆ สำหรับไม่ใช่

สตริงนี้จับคู่กับทุกบรรทัดดังนั้น ส่ง "n\r"; exp_ดำเนินการต่อ จะถูกเรียกใช้ ดังนั้นทั้งหมดของ คำตอบ

วิธีแก้ปัญหาที่ง่ายที่สุดคือใส่บรรทัดนี้ไว้ท้าย คาดหวัง อาร์เรย์เพื่อให้ทำหน้าที่เป็น catch-all เริ่มต้น

qqPPPPbb avatar
ky flag
ขอบคุณสำหรับคำตอบ ฉันเลือกคู่ผิด

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา