หนีรหัสผ่านโดยใช้คอนโซล mysqldump


55

ฉันใช้ mysqldump ผ่านสคริปต์ทุบตีและพบปัญหากับรหัสผ่านที่มีอักขระพิเศษ

mysqldump -hlocalhost -uUSERNAME -pPA$$W0RD DATABASE | 
                                gzip > /home/USERNAME/backups-mysql/BACKUP.gz

ฉันจะหลีกเลี่ยงรหัสผ่านได้อย่างไร

คำตอบ:


84

ฉันพบคำตอบ คุณต้องอ้างรหัสผ่านเช่นนี้:

mysql -u root -p'PASSWORD'

คุณต้องทำสิ่งนี้หากรหัสผ่านมีอักขระใด ๆ ต่อไปนี้: * ? [ < > & ; ! | $ ( )


คุณรู้วิธีหนี apostrophes ในรหัสผ่านหรือไม่?
Steve Mayne

3
@SteveMayne ฉันคิดว่ามันเป็นเพียงแบ็กสแลชก่อนที่มันจะ
psynnott

3
วงเล็บต้องอยู่ในเครื่องหมายคำพูด
Félix Gagnon-Grenier

1
บน Windows ฉันพบว่าฉันต้องใช้เครื่องหมายคำพูดคู่ เครื่องหมายคำพูดเดี่ยวไม่ทำงาน (MySQL 5.6)
TheStoryCoder

1
ช่องว่างในรหัสผ่านต้องใช้ ''
Hafenkranich

12

เมื่อคุณใช้เครื่องหมายคำพูดตรวจสอบให้แน่ใจว่าไม่มีที่ว่าง:
ระหว่าง-pและ'PASSWORD' หรือ
ระหว่าง--password=และ'PASSWORD'

แก้ไข:
mysql -u root -p'PASSWORD'
mysql -u root --password='PASSWORD'

ไม่สำเร็จ:
mysql -u root -p 'PASSWORD'
mysql -u root --password = 'PASSWORD'

คุณยังสามารถกำหนดตัวแปรแล้วใช้สำหรับคำสั่ง (ยังไม่มีช่องว่างในระหว่าง) MSQLPWD='PASSWORD'
mysql -u root -p$MSQLPWD


2

ขึ้นอยู่กับเปลือกของคุณ คุณใช้ Microsoft Windows หรือ Linux หรือไม่ หากคุณใช้ Linux / BASH อาจเป็นไปได้ว่า $$ กำลังถูกตีความเป็นรหัสกระบวนการปัจจุบันของคุณ คุณลองใส่แบ็กสแลชต่อหน้าเครื่องหมายดอลลาร์แต่ละอันหรือไม่? เช่น

mysqldump \
  -hlocalhost \
  -uUSERNAME \
  -pPA\$\$W0RD \
  DATABASE \
| gzip -c \
> /home/USERNAME/backups-mysql/BACKUP.gz

โปรดทราบว่า gzip อาจต้องการตัวเลือก "-c" หากคุณต้องการบีบอัดไปยัง STDOUT


รหัสผ่านที่ฉันใช้ไม่ใช่ PA $$ W0RD แต่ฉันใช้นี่เป็นตัวอย่าง รหัสผ่านจริงที่ฉันใช้มีเครื่องหมายและนี่คือสิ่งที่ทำให้เกิดปัญหา ฉันใช้แบ็กสแลชตามที่คุณแนะนำ แต่มันใช้ไม่ได้
psynnott

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