4.3. Управление учетными записями пользователей MySQL
4.3.8. Обеспечение безопасности своего пароля
Не рекомендуется указывать пароль таким образом, чтобы его могли подобрать другие пользователи. Ниже приведены методы, которыми можно пользоваться при задании своего пароля при запуске указанных клиентских программ, а также степенью риска для каждого из методов:
Никогда не заносите пароль обычного доступа в таблицу mysql.user. Зная даже зашифрованный пароль пользователя, можно войти в систему под именем этого пользователя. Пароли шифруются только для того, чтобы нельзя было увидеть, какой именно пароль используется (если вы используете один и тот же пароль для разных приложений).
Использование параметров -pyour_pass или --password=your_pass в командной строке удобно, но не очень безопасно, так как ваш пароль становится видимым для системных статусных утилит (таких как ps), и другие пользователи могут просмотреть командные строки (во время запуска клиенты MySQL обычно перезаписывают аргументы командной строки нулями, но существует небольшой промежуток времени, на протяжении которого значение остается видимым).
Используйте параметр -p или --password (без указания значения your_pass). В этом случае программа клиента запрашивает пароль с терминала:
shell> mysql -u user_name -p
Enter password: ********
Ваш пароль будет представлен символами "*".
Вводить пароль таким образом намного безопаснее, чем из командной строки, поскольку он невидим для остальных пользователей. Тем не менее, этот метод подходит только для тех программ, которые вы запускаете самостоятельно. Если клиент требуется запустить из скрипта, то возможности ввести пароль с терминала не будет. В некоторых системах первая строка скрипта считывается и неправильно распознается как ваш пароль!
Храните свой файл в файле конфигурации. Например, можно записать свои пароли в разделе [client] файла .my.cnf в своем каталоге:
[client]
password=your_pass
Если пароль хранится в .my.cnf, файл не должен быть доступен для чтения или записи для всех или для отдельных групп пользователей. Убедитесь, что права доступа к файлу установлены в 400 или 600.
Можно хранить свой пароль в переменной окружения MYSQL_PWD, но этот метод считается очень небезопасным и не должен использоваться. В некоторые версии ps включена возможность отображать переменные окружения работающего процесса. Поэтому если задать свой пароль при помощи MYSQL_PWD, он будет виден для всех,. Даже в системах без такой версии ps, неразумно предполагать, что не существует другого метода получить информацию по переменным окружения. See Приложение F, Переменные окружения.
Исходя из всего сказанного выше, самыми безопасными методами указания пароля являются запрос программы клиента на ввод пароля с терминала или указание пароля в защищенном надлежащим образом файле .my.cnf.