Tôi đã có một vài công cụ BASH sử dụng mysql -e "{command}"
chức năng này. Nhập mật khẩu mỗi khi tôi sử dụng các công cụ này sẽ là một nỗi đau, vì vậy, để tránh việc mật khẩu được ghi trong tệp văn bản gốc có mã, tôi lưu nó vào bộ nhớ (sử dụng read -s
) và để BASH đọc nó bất cứ khi nào nó chạy các lệnh.
Mysql vẫn nghĩ rằng mật khẩu đang được gửi qua dòng lệnh (bởi vì, theo cách nói, nó là như vậy) và vẫn gây ra lỗi cho tôi "Sử dụng mật khẩu trên giao diện dòng lệnh có thể không an toàn."
Đối với mục đích của tôi, tôi không cần phải chặn thông điệp này. Những gì tôi cần biết là, cái gì có thể làm cho nó không an toàn? Mật khẩu không bao giờ có thể nhìn thấy được về mặt vật lý, vì vậy việc lướt vai không thể thực hiện được và thậm chí ai đó đoán mật khẩu SSH của tôi sẽ không thể thực hiện được vì nó được lưu trong bộ nhớ thay vì trong chính các tập lệnh. Là một cuộc tấn công trung gian hoặc một cái gì đó tương tự có thể?
bash
đọc nó khi bạn chạy lệnh? Nếu bạn làm mysql -p"$pass"
thì bất cứ ai cũng có thể nhìn thấy nó trong ps
.
~/.my.cnf
ví dụ Bạn có thể chỉ định mỗi máy chủ bằng cách thực hiện,[client<hostname>]
ví dụ:[clientlocalhost]
các công cụ MySQL sẽ sử dụng nó tự động để dễ dàng và an toàn hơn