Spec-Zone.ru › MySQL 9.2

A.9 MySQL 9.2 FAQ: Безопасность

A.9.1. Где я могу найти документацию, посвященную вопросам безопасности MySQL?
A.9.2. Какой плагин аутентификации используется по умолчанию в MySQL 9.2?
A.9.3. Поддерживает ли MySQL протокол SSL?
A.9.4. Включена ли поддержка SSL в бинарниках MySQL, или мне нужно перекомпилировать их для её активации?
A.9.5. Поддерживает ли MySQL встроенную аутентификацию против каталогов LDAP?
A.9.6. Поддерживает ли MySQL управление доступом на основе ролей (RBAC)?
A.9.7. Поддерживает ли MySQL TLS 1.0 и 1.1?

A.9.1.

Где можно найти документацию, посвященную вопросам безопасности MySQL?

Лучше всего начать с Главы 8, Безопасность.

Другие разделы документации MySQL, которые могут быть полезны в отношении конкретных проблем безопасности, включают следующие:

  • Раздел 8.1.1, «Рекомендации по безопасности».

  • Раздел 8.1.3, «Обеспечение безопасности MySQL от атак».

  • Раздел B.3.3.2, «Как сбросить пароль root».

  • Раздел 8.1.5, «Как запустить MySQL как обычный пользователь».

  • Раздел 8.1.4, «Параметры и переменные mysqld, связанные с безопасностью».

  • Раздел 8.1.6, «Рекомендации по безопасности для LOAD DATA LOCAL».

  • Раздел 2.9, «Настройка и тестирование после установки».

  • Раздел 8.3, «Использование защищённых соединений».

  • Меры предосторожности при использовании функций загружаемых функций.

Также имеется Руководство по безопасной установке, в котором представлены процедуры для развертывания универсального двоичного дистрибутива MySQL Enterprise Edition Server с возможностями управления безопасностью вашей установки MySQL.

A.9.2.

Какая подключаемая плагин аутентификации по умолчанию используется в MySQL 9.2?

Подключаемый модуль аутентификации по умолчанию начиная с MySQL 8.0 — это caching_sha2_password. Дополнительная информация об этом модуле доступна в Разделе 8.4.1.1, «Подключаемый модуль аутентификации с кэшированием SHA-2».

Подключаемый модуль caching_sha2_password обеспечивает более безопасное шифрование паролей, чем устаревший подключаемый модуль mysql_native_password (который являлся модулем по умолчанию в версиях MySQL до MySQL 8.0). Сведения о последствиях этой смены модуля по умолчанию для работы сервера и совместимости с клиентами и коннекторами см. в .

Дополнительная информация о подключаемых модулях аутентификации и других доступных плагинах аутентификации доступна в Разделе 8.2.17, «Подключаемые модули аутентификации» и Разделе 8.4.1, «Подключаемые модули аутентификации».

A.9.3.

Поддерживает ли MySQL протокол SSL по умолчанию?

Да, в двоичных файлах есть поддержка SSL-соединений между клиентом и сервером. См. Раздел 8.3, «Использование защищённых соединений».

Также можно использовать туннель через SSH, если (например), клиентское приложение не поддерживает SSL-соединения. Пример см. в Разделе 8.3.4, «Подключение к MySQL удаленно из Windows с помощью SSH».

A.9.4.

Поддержка SSL включена в двоичные файлы MySQL или мне нужно перекомпилировать их, чтобы ее включить?

Да, SSL включен в двоичные файлы для защищённых, аутентифицированных или и тех, и других клиентских/серверных соединений. См. Раздел 8.3, «Использование защищённых соединений».

A.9.5.

Поддерживает ли MySQL встроенную аутентификацию против каталогов LDAP?

Издание Enterprise включает плагин аутентификации PAM, поддерживающий аутентификацию по каталогу LDAP.

A.9.6.

Поддерживает ли MySQL контроль доступа на основе ролей (RBAC)?

На данный момент нет.

A.9.7.

Поддерживает ли MySQL протоколы TLS 1.0 и 1.1?

Поддержка протоколов TLSv1 и TLSv1.1 удалена начиная с MySQL 8.0.28. Протоколы были устаревшими начиная с MySQL 8.0.26. Последствия этого удаления описаны в .

Поддержка TLS 1.0 и 1.1 удалена, так как эти версии протокола устарели, выпущенные в 1996 и 2006 годах, соответственно. Используемые алгоритмы слабые и устарели.

Если вы не используете очень старые версии MySQL Server или коннекторов, у вас, скорее всего, нет подключений с использованием TLS 1.0 или 1.1. Коннекторы и клиенты MySQL по умолчанию выбирают наивысшую доступную версию TLS.

Когда поддержка TLS 1.2 была добавлена в MySQL Server? MySQL Community Server добавил поддержку TLS 1.2, когда сообщественный сервер перешел на OpenSSL для MySQL 5.6, 5.7 и 8.0 в 2019 году. Для MySQL Enterprise Edition, OpenSSL добавил поддержку TLS 1.2 в 2015 году, в MySQL Server 5.7.10.

Как можно посмотреть, какие версии TLS активно используются? Для MySQL 5.7 или 8.0, проверьте, используются ли TLS 1.0 или 1.1, выполнив этот запрос:

SELECT
  `session_ssl_status`.`thread_id`, `session_ssl_status`.`ssl_version`,
  `session_ssl_status`.`ssl_cipher`, `session_ssl_status`.`ssl_sessions_reused`
FROM `sys`.`session_ssl_status`
WHERE ssl_version NOT IN ('TLSv1.3','TLSv1.2');

Если в списке есть поток, использующий TLSv1.0 или TLSv1.1, вы можете определить, откуда происходит это подключение, выполнив этот запрос:

SELECT thd_id,conn_id, user, db, current_statement, program_name
FROM sys.processlist
WHERE thd_id IN (
                  SELECT `session_ssl_status`.`thread_id`
                  FROM `sys`.`session_ssl_status`
                  WHERE ssl_version NOT IN ('TLSv1.3','TLSv1.2')
                );

В качестве альтернативы, вы можете выполнить этот запрос:

SELECT *
FROM sys.session
WHERE thd_id IN (
                  SELECT `session_ssl_status`.`thread_id`
                  FROM `sys`.`session_ssl_status`
                  WHERE ssl_version NOT IN ('TLSv1.3','TLSv1.2')
                );

Эти запросы предоставляют необходимые детали для определения приложения, которое не поддерживает TLS 1.2 или 1.3, и для целевого обновления этих приложений.

Есть ли другие варианты тестирования TLS 1.0 или 1.1? Да, вы можете отключить эти версии перед обновлением сервера до более новой версии. Явно укажите, какую версию использовать, либо в mysql.cnf (или mysql.ini), либо с помощью SET PERSIST, например: --tls-version=TLSv12.

Все MySQL Connectors (5.7 и 8.0) поддерживают TLS 1.2 и выше? Что насчет приложений C и C++ использующих libmysql? Для приложений C и C++ использующих сообщественный libmysqlclient библиотеку, используйте библиотеку на основе OpenSSL (то есть, не используйте YaSSL). Использование OpenSSL было унифицировано в 2018 году (в MySQL 8.0.4 и 5.7.28, соответственно). То же самое относится к Connector/ODBC и Connector/C++. Чтобы определить, какие библиотеки зависимостей используются, выполните следующие команды, чтобы увидеть, указан ли OpenSSL. В Linux используйте эту команду:

$> sudo ldd usr/local/mysql/lib/libmysqlclient.a | grep -i openssl

В MacOS используйте эту команду:

$> sudo otool -l /usr/local/mysql/lib/libmysqlclient.a | grep -i openssl

Проверьте документацию для каждого коннектора, но они поддерживают TLS 1.2 и TLS 1.3.

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

Spec-Zone.ru

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