Безопасность пароля MySQL для применения в скриптах

1) Никогда не заносите пароль обычного доступа в таблицу mysql.user. Зная даже зашифрованный пароль пользователя, можно войти в систему под именем этого пользователя. Пароли шифруются только для того, чтобы нельзя было увидеть, какой именно пароль используется (если вы используете один и тот же пароль для разных приложений).

2) Использование параметров -pyour_pass или --password=your_pass в командной строке удобно, но не безопасно, так как ваш пароль становится видимым для системных статусных утилит (таких как ps), и другие пользователи могут просмотреть командные строки (во время запуска клиенты MySQL обычно перезаписывают аргументы командной строки нулями, но существует небольшой промежуток времени, на протяжении которого значение остается видимым).

3) Используйте параметр -p или --password (без указания значения your_pass). В этом случае программа клиента запрашивает пароль с терминала:

shell> mysql -u user_name -p
Enter password: ********

Ваш пароль будет представлен символами *.
Вводить пароль таким образом намного безопаснее, чем из командной строки, поскольку он невидим для остальных пользователей.
Тем не менее, этот метод подходит только для тех программ, которые вы запускаете самостоятельно.
Если клиент требуется запустить из скрипта, то возможности ввести пароль с терминала не будет.
В некоторых системах первая строка скрипта считывается и неправильно распознается как ваш пароль.

4) Храните свой файл в файле конфигурации. Например, можно записать свои пароли в разделе [client] файла .my.cnf в своем каталоге:

[client]
user=username
password=your_pass

Если пароль хранится в .my.cnf, файл не должен быть доступен для чтения или записи для всех или для отдельных групп пользователей. Убедитесь, что права доступа к файлу установлены в 400 или 600.

5) Можно хранить свой пароль в переменной окружения MYSQL_PWD, но этот метод считается очень небезопасным и не должен использоваться. В некоторые версии ps включена возможность отображать переменные окружения работающего процесса.
Поэтому если задать свой пароль при помощи MYSQL_PWD, он будет виден для всех. Даже в системах без такой версии ps, неразумно предполагать, что не существует другого метода получить информацию по переменным окружения.

6) Вход в Debian системе без набора пароля:

mysql —defaults-extra-file=/etc/mysql/debian.cnf
Пароль берется из файла /etc/mysql/debian.cnf