Làm sao thoát được! trong mật khẩu?


24

Làm thế nào một người có thể thoát khỏi dấu chấm than trong mật khẩu:

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

Thử dấu gạch chéo ngược rõ ràng không giúp được gì:

$ 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)

Tất cả các tìm kiếm google của tôi cho thấy dấu gạch chéo ngược sẽ có ích, nhưng không được. Không có cách nào để sử dụng dấu ngoặc kép như đề xuất trong câu hỏi này . Dòng này sẽ được sử dụng trong bí danh .bashrc. Đừng lo lắng, tên người dùng và mật khẩu hiển thị ở đây chỉ là ví dụ và không được sử dụng trong sản xuất!


bạn luôn có thể sử dụng dấu ngoặc đơn. để sử dụng một trích dẫn "bên trong" một chuỗi trích dẫn đơn, hãy thử:''\'
cas

6
BTW, đặt mật khẩu trên dòng lệnh là một rủi ro bảo mật tiềm ẩn trên hệ thống nhiều người dùng. Thật dễ dàng để kiểm tra các đối số dòng lệnh của bất kỳ quá trình đang chạy. Sử dụng tệp .my.cnf thay thế (hãy nhớ chmod 600nó).
cas

Rất tiếc. đó '\'', không phải''\'
cas

Cảm ơn, Craig. Trên thực tế, điều này an toàn hơn so với giải pháp thay thế: gửi email cho mọi người một bản sao mật khẩu mà sau đó sẽ được lưu trữ là người biết. Cá nhân tôi muốn mỗi nhà phát triển có người dùng riêng /home/uservà mysql, nhưng tôi không phải là người ra quyết định về vấn đề đó.
dotancohen

2
quản lý là khôn ngoan và hiểu biết tất cả :)
cas

Câu trả lời:


38

Sử dụng dấu ngoặc đơn xung quanh mật khẩu như thế này: -p'one_@&!two'

Để đặt nó trong một bí danh, bạn sẽ làm một cái gì đó như:

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


1
không có khoảng cách giữa -p và mật khẩu, nhưng vâng, cái này sẽ hoạt động
mulaz

đã chỉnh sửa không gian :)
cas

4
-bash: !two: command not found

Bạn cũng cần thoát khỏi &nhân vật:

$ mysql -umyuser -pone_@\&\!two

3

Nếu bạn không bao giờ sử dụng! tính năng lịch sử, có thể thuận tiện hơn khi chỉ cần vô hiệu hóa chúng (với set +Hbashrc của bạn).


1

Bạn có thể lưu trữ mật khẩu trong một biến bash:

$ pass='one_@&!two'

Sau đó thay thế biến trong lệnh:

$ mysql -umyuser -p$pass

câu trả lời thú vị;)
chapskev
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.