У меня есть несколько инструментов BASH, которые используют эту mysql -e "{command}"
функцию. Ввод пароля каждый раз, когда я использую эти инструменты, будет проблематичен, поэтому, чтобы избежать записи пароля в текстовом файле с кодом, я сохраняю его в памяти (используя read -s
) и читаю BASH при каждом запуске команд.
Mysql по-прежнему считает, что пароль передается через командную строку (потому что, так сказать, это так), и по-прежнему выдает ошибку «Использование пароля в интерфейсе командной строки может быть небезопасным».
Для моих целей мне не нужно подавлять это сообщение. Что мне нужно знать, так это то, что может сделать его небезопасным? Пароль никогда не виден физически, поэтому серфинг по плечу не может этого сделать, и даже тот, кто угадал мой пароль SSH, не сможет этого сделать, поскольку он хранится в памяти, а не в самих скриптах. Возможна ли атака «человек посередине» или нечто подобное?
bash
прочитали это, когда запускаете команду? Если вы это сделаете, mysql -p"$pass"
то любой может увидеть это в ps
.
~/.my.cnf
пример. Вы можете указать для каждого хоста,[client<hostname>]
например,[clientlocalhost]
инструменты MySQL будут использовать его автоматически, так что это будет проще и безопаснее