6.1.2.1 Руководство для конечных пользователей по защите паролей
Пользователи MySQL должны использовать следующие рекомендации для обеспечения безопасности паролей.
При запуске клиентской программы для подключения к серверу MySQL не рекомендуется указывать пароль таким образом, чтобы он стал доступен другим пользователям. Способы указания пароля при запуске клиентских программ приведены здесь вместе с оценкой рисков каждого метода. Короче говоря, самые безопасные методы — это запрос пароля у клиентской программы или указание пароля в правильно защилённом файле опций.
Используйте утилиту mysql_config_editor, которая позволяет хранить учетные данные аутентификации в зашифрованном файле пути входа, названном
.mylogin.cnf. Файл может быть прочитан позднее клиентскими программами MySQL для получения учетных данных аутентификации для подключения к серверу MySQL. См. Раздел 4.6.6, «mysql_config_editor — Утилита конфигурации MySQL».-
Используйте опцию
--password=илиpassword-pв командной строке. Например:password$>
mysql -u francis -pfrankdb_nameПредупреждениеЭто удобно, но небезопасно. В некоторых системах ваш пароль становится видимым для системных программ статуса, таких как ps, которые могут быть вызваны другими пользователями для отображения командных строк. Клиенты MySQL обычно перезаписывают аргумент пароля командной строки нулями во время своей последовательности инициализации. Однако всё ещё существует короткий интервал, в течение которого значение видно. Кроме того, в некоторых системах эта стратегия перезаписи неэффективна, и пароль остаётся видимым для ps. (Системы Unix SystemV и, возможно, другие подвержены этой проблеме.)
Если ваша операционная среда настроена на отображение текущей команды в строке заголовка окна терминала, пароль остаётся видимым, пока команда выполняется, даже если команда прокрутилась за пределы видимой области окна.
-
Используйте опцию
--passwordили-pв командной строке без указания значения пароля. В этом случае клиентская программа запрашивает пароль интерактивно:$>
mysql -u francis -pEnter password: ********db_nameСимволы
*указывают, где вы вводите свой пароль. Пароль не отображается при вводе.Ввод пароля таким образом более безопасен, чем его указание в командной строке, так как он не виден другим пользователям. Однако этот метод ввода пароля подходит только для программ, которые вы запускаете интерактивно. Если вы хотите вызвать клиент из скрипта, который выполняется неинтерактивно, нет возможности ввести пароль с клавиатуры. В некоторых системах вы даже можете обнаружить, что первая строка вашего скрипта читается и интерпретируется (неправильно) как ваш пароль.
-
Храните свой пароль в файле опций. Например, в Unix вы можете указать свой пароль в секции
[client]файла.my.cnfв вашем домашнем каталоге:[client] password=
passwordДля обеспечения безопасности пароля файл не должен быть доступен никому, кроме вас. Для этого установите режим доступа к файлу в
400или600. Например:$>
chmod 600 .my.cnfЧтобы указать в командной строке конкретный файл опций, содержащий пароль, используйте опцию
--defaults-file=, гдеfile_namefile_name— полный путь к файлу. Например:$>
mysql --defaults-file=/home/francis/mysql-optsРаздел 4.2.2.2, «Использование файлов опций» содержит более подробную информацию о файлах опций.
-
Храните свой пароль в переменной окружения
MYSQL_PWD. См. Раздел 4.9, «Переменные среды».Этот метод указания вашего пароля MySQL должен считаться крайне небезопасным и не должен использоваться. Некоторые версии ps включают опцию отображения среды выполнения процессов. В некоторых системах, если вы установите
MYSQL_PWD, ваш пароль будет доступен любому другому пользователю, который запустит ps. Даже в системах без такой версии ps неразумно полагаться на то, что нет других методов, с помощью которых пользователи могут просматривать среды процессов.
В Unix клиент mysql записывает протокол выполненных операторов в файл истории (см. Раздел 4.5.1.3, «Регистрация клиента mysql»). По умолчанию этот файл называется .mysql_history и создаётся в вашем домашнем каталоге. Пароли могут записываться как обычный текст в операторах SQL, таких как CREATE USER и ALTER USER, поэтому если вы используете эти операторы, они регистрируются в файле истории. Для обеспечения безопасности этого файла используйте ограниченный режим доступа, так же как и описано ранее для файла .my.cnf.
Если ваша командная оболочка настроена на сохранение истории, любой файл, в котором сохраняются команды, содержит пароли MySQL, введённые в командной строке. Например, bash использует ~/.bash_history. Любой такой файл должен иметь ограниченный режим доступа.
© 2025 Oracle
Licensed under the GPLv2 License.