Spec-Zone.ru › MySQL 9.2

8.1.2.1 Руководство для конечных пользователей по безопасности паролей

Пользователи MySQL должны соблюдать следующие рекомендации для обеспечения безопасности паролей.

При запуске клиентской программы для подключения к серверу MySQL не рекомендуется указывать пароль таким образом, чтобы он был доступен другим пользователям. Способы указания пароля при запуске клиентских программ приведены ниже, а также оценка рисков каждого из них. Короче говоря, самые безопасные методы — это запрос пароля клиентской программой или указание пароля в надлежащим образом защиленном файле опций.

  • Используйте утилиту mysql_config_editor, которая позволяет хранить учетные данные аутентификации в зашифрованном файле пути входа, названном .mylogin.cnf. Файл может быть прочитан позже клиентскими программами MySQL для получения учетных данных аутентификации для подключения к серверу MySQL. См. раздел 6.6.7, «mysql_config_editor — утилита конфигурации MySQL».

  • Используйте опцию --password=password или -ppassword в командной строке. Например:

    $> mysql -u francis -pfrank db_name
    
    Предупреждение

    Это удобно но небезопасно. На некоторых системах ваш пароль становится видимым для системных программ статуса, таких как ps, которые могут быть вызваны другими пользователями для отображения командных строк. Клиенты MySQL обычно перезаписывают аргумент пароля командной строки нулями во время своей начальной последовательности. Однако существует небольшой промежуток времени, в течение которого значение видно. Кроме того, на некоторых системах эта стратегия перезаписи неэффективна, и пароль остается видимым для ps. (Системы Unix SystemV и, возможно, другие подвержены этой проблеме.)

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

  • Используйте опцию --password или -p в командной строке без указания значения пароля. В этом случае клиентская программа запрашивает пароль интерактивно:

    $> mysql -u francis -p db_name
    Enter password: ********
    

    Символы * указывают место, где вы вводите свой пароль. Пароль не отображается при вводе.

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

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

    [client]
    password=password
    

    Чтобы обеспечить безопасность пароля, файл должен быть доступен только вам. Для этого установите режим доступа к файлу в 400 или 600. Например:

    $> chmod 600 .my.cnf
    

    Чтобы указать в командной строке конкретный файл опций, содержащий пароль, используйте опцию --defaults-file=file_name, где file_name — полное имя пути к файлу. Например:

    $> mysql --defaults-file=/home/francis/mysql-opts
    

    Раздел 6.2.2.2, «Использование файлов опций», содержит более подробные сведения о файлах опций.

В Unix клиент mysql записывает журнал выполненных операторов в файл истории (см. раздел 6.5.1.3, «Регистрация клиента mysql»). По умолчанию этот файл называется .mysql_history и создается в вашем домашнем каталоге. Пароли могут быть записаны в виде открытого текста в операторах SQL, таких как CREATE USER и ALTER USER, поэтому если вы используете эти операторы, они будут записаны в файле истории. Для защиты этого файла используйте ограниченный режим доступа, так же как и для файла .my.cnf.

Если ваш интерпретатор команд поддерживает историю, любой файл, в котором сохраняются команды, содержит пароли MySQL, введенные в командной строке. Например, bash использует ~/.bash_history. Любой такой файл должен иметь ограниченный режим доступа.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/password-security-user.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API