มีวิธีส่งรหัสผ่านผู้ใช้ DB ไปยังเครื่องมือบรรทัดคำสั่ง mysqladmin หรือไม่?


108

ขณะนี้ฉันใช้สิ่งต่อไปนี้ แต่จะแจ้งให้ฉันพิมพ์รหัสผ่านด้วยตนเองเสมอ มีวิธีใดบ้างที่จะส่งผ่านไปยังบรรทัดคำสั่งเมื่อเรียกใช้ไฟล์ปฏิบัติการได้?

mysqladmin processlist -u root -p

4
ตั้งค่า MYSQL_PWD ในสภาพแวดล้อม ( export MYSQL_PWD=muhpassword) และดำเนินการคำสั่งของคุณโดยไม่ใช้-p. ดูตัวแปร MySQL โครงการสิ่งแวดล้อม ทั้งๆที่ของคู่มือของคำเตือนน่ากลัวนี้เป็นที่ค่อนข้างปลอดภัย เว้นแต่คุณจะเริ่มต้น Warez แปลก ๆ ในเชลล์เดียวกันที่อาจซ่อนสภาพแวดล้อมของคุณและส่งออกไปที่ darkaspirator.cc
David Tonhofer

คำตอบ:


198

เพิ่งค้นพบคำตอบ ....

mysqladmin processlist -u root -pYOURPASSWORDHERE

ไม่มีช่องว่างระหว่างรหัสผ่านของคุณและ -p


14
อนุญาตให้ใส่เครื่องหมายคำพูดได้เช่นกันหากรหัสผ่านมีช่องว่างเช่น-p'YOURPASSWORD HERE'
Vigintas Labakojis

43
ว้าว ... จริงที่ใช้งานง่าย ... ช่องว่างระหว่าง-h localhostและแต่ไม่-u root -pPASSWORDโปรแกรมเมอร์คลาสสิกทำให้ทุกอย่างยากเกินความจำเป็น
Kolob Canyon

4
@KolobCanyon คุณสามารถเว้นช่องว่างระหว่าง -u และ root -urootทำงานได้ดี
Peter Ajtai

12
คำเตือน: ถือว่าไม่ปลอดภัย: dev.mysql.com/doc/mysql-security-excerpt/5.7/en/…
neverendingqs

3
@KolobCanyon: ถ้ารหัสผ่านของคุณขึ้นต้นด้วยช่องว่างล่ะ? ;) โปรแกรมเมอร์ไม่สามารถตัดสินใจได้ว่าช่องว่างแยกตัวเลือกและค่าของมันหรือเป็นอักขระตัวแรกของรหัสผ่าน ...
Stéphane

45

ลอง:

--password=PasswordTextHere 

มีประโยชน์เมื่อคุณต้องส่งรหัสผ่าน "ว่างเปล่า" (แน่นอนสำหรับวัตถุประสงค์ในการทดสอบ)
Ivo Pereira

สิ่งนี้ดูเหมือนจะเป็นตัวเลือกเดียวสำหรับการส่งรหัสผ่านที่ว่างเปล่าในบรรทัดคำสั่ง (เช่นบนอินสแตนซ์แซนด์บ็อกซ์)
penCsharpener

11

สิ่งนี้ควรใช้งานได้: mysql -uroot -p'password'

หากคุณกำลังพยายามทำให้โซลูชัน mysql เป็นระบบอัตโนมัติคุณสามารถใช้รหัสผ่านจากตัวแปร:

mysql_pass=$(sudo grep -oP "temporary password is generated for root@localhost: \K(.*)" /var/log/mysqld.log)

mysql -uroot -p"$mysql_pass" < somescript.sql

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