วิธีที่จะหลบหนี! ในรหัสผ่าน?


24

วิธีใดวิธีหนึ่งที่จะหนีจากเครื่องหมายอัศเจรีย์ในรหัสผ่าน:

$ mysql -umyuser -pone_@&!two
-bash: !two: event not found

การลองแบ็กสแลชที่เห็นได้ชัดไม่ได้ช่วยอะไร:

$ mysql -umyuser -pone_@&\!two
[1] 22242
-bash: !two: command not found
name@domain.com [~]# ERROR 1045 (28000): Access denied for user 'myuser'@'localhost' (using password: YES)

การค้นหา google ของฉันทั้งหมดแนะนำว่าแบ็กสแลชจะช่วยได้ แต่ก็ไม่ได้ ไม่มีวิธีใช้เครื่องหมายคำพูดตามที่แนะนำในคำถามนี้ สายจะถูกใช้ในนามแฝง. bashrc ไม่ต้องกังวลชื่อผู้ใช้และรหัสผ่านที่แสดงเป็นตัวอย่างเท่านั้นและไม่ได้ใช้ในการผลิต!


คุณสามารถใช้เครื่องหมายคำพูดเดี่ยว ๆ ได้ตลอดเวลา ในการใช้เครื่องหมายคำพูดเดี่ยว "ข้างใน" สตริงที่มีเครื่องหมายคำพูดเดี่ยวให้ลอง:''\'
cas

6
BTW การใส่รหัสผ่านบนบรรทัดคำสั่งเป็นความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้นกับระบบผู้ใช้หลายคน เป็นการง่ายที่จะตรวจสอบ args ของบรรทัดคำสั่งของกระบวนการใด ๆ ที่กำลังทำงานอยู่ ใช้ไฟล์. my.cnf แทน (อย่าลืมchmod 600)
cas

อุ่ย ว่า'\''ไม่''\'
cas

ขอบคุณเครก ที่จริงแล้วมันปลอดภัยกว่าทางเลือกอื่น: ส่งสำเนารหัสผ่านให้ทุกคนทางอีเมลซึ่งจะถูกเก็บไว้ที่ใครรู้ โดยส่วนตัวแล้วฉันต้องการให้ผู้พัฒนาแต่ละคนมี/home/userผู้ใช้ของตนเองและผู้ใช้ mysql แต่ฉันไม่ใช่ผู้ตัดสินใจในเรื่องนั้น
dotancohen

2
การจัดการที่ชาญฉลาดและรอบรู้ :)
CAS

คำตอบ:


38

ใช้เครื่องหมายคำพูดเดี่ยว ๆ ล้อมรอบรหัสผ่านเช่นนี้: -p'one_@&!two'

หากต้องการวางไว้ในนามแฝงคุณต้องทำสิ่งต่อไปนี้:

alias runmysql='mysql -umyuser -p'\''one_@&!two'\'''


1
ไม่มีที่ว่างระหว่าง -p และรหัสผ่าน แต่ใช่สิ่งนี้ควรใช้งานได้
mulaz

แก้ไขแล้วออกพื้นที่ :)
CAS


3

หากคุณไม่เคยใช้! คุณลักษณะประวัติมันอาจจะสะดวกกว่าที่จะปิดการใช้งานพวกเขา (ด้วยset +Hใน bashrc ของคุณ)


1

คุณสามารถเก็บรหัสผ่านในตัวแปร bash:

$ pass='one_@&!two'

จากนั้นแทนที่ตัวแปรในคำสั่ง:

$ mysql -umyuser -p$pass

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