Пароль mysql в командной строке

Чтобы безопасно не интерактивно передавать пароль (а попутно и другие данные) в mysql, нужно поступить так.

  1. Создаём файл в недоступной по http директории; в примере назовём его def.cnf
  2. Добавляем в него такие строки:
    [client]
    user = имя_пользователя
    password = пароль
    host = хост_бд
    [mysql]
    database = имя_бд

    (Можно дополнить файл и другими директивами.)

  3. Даём файлу минимальные права, например 400 или 600.
  4. Используем вместо такой записи
    mysql --host=хост_бд \
    --user=имя_пользователя \
    --password=пароль имя_бд \
    --execute="SELECT NOW();"

    такую:

    mysql --defaults-extra-file="/path/def.cnf" \
    --execute="SELECT NOW();"

    Важно: --defaults-extra-file должен быть первым ключом.

  5. Хинт. Добавляем путь к файлу def.cnf в переменную окружения, и нам больше не нужно вводить его при наборе команды, например:
    mysql --defaults-extra-file=$DEF \
    --execute="SELECT NOW();"

По материалам man mysqld_safe и http://www.opennet.ru/tips/info/1313.shtml