Spec-Zone.ru › MariaDB

Подключаемый модуль аутентификации — mysql_native_password

Подключаемый модуль аутентификации mysql_native_password является стандартным подключаемым модулем аутентификации, который будет использоваться для учетной записи, созданной, когда не указан явно подключаемый модуль аутентификации, и параметр old_passwords=0 установлен. Он использует алгоритм хеширования паролей, введенный в MySQL 4.1, который также используется функцией PASSWORD(), когда параметр old_passwords=0 установлен. Этот алгоритм хеширования основан на SHA-1.

Не рекомендуется использовать подключаемый модуль аутентификации mysql_native_password для новых установок, требующих высокой безопасности паролей. Если кто-то может как прослушивать протокол подключения, так и получить копию таблицы mysql.user, то этот человек сможет использовать эту информацию для подключения к серверу MariaDB. Подключаемый модуль аутентификации ed25519 — это более современный подключаемый модуль аутентификации, который обеспечивает простую аутентификацию паролей с использованием более безопасного алгоритма.

Установка подключаемого модуля

Подключаемый модуль аутентификации mysql_native_password статически связан с сервером, поэтому установка не требуется.

Создание пользователей

Самый простой способ создать учетную запись пользователя с подключаемым модулем аутентификации mysql_native_password — убедиться, что параметр old_passwords=0 установлен, а затем создать учетную запись пользователя с помощью CREATE USER, не указывая подключаемый модуль аутентификации, но указывая пароль с помощью предложения IDENTIFIED BY. Например:

SET old_passwords=0;
CREATE USER username@hostname IDENTIFIED BY 'mariadb';

Если параметр SQL_MODE не содержит NO_AUTO_CREATE_USER, то вы также можете создать учетную запись пользователя с помощью GRANT. Например:

SET old_passwords=0;
GRANT SELECT ON db.* TO username@hostname IDENTIFIED BY 'mariadb';

Вы также можете создать учетную запись пользователя, предоставив хеш пароля с помощью предложения IDENTIFIED BY PASSWORD, и MariaDB проверит, является ли хеш пароля совместимым с mysql_native_password. Например:

SET old_passwords=0;

SELECT PASSWORD('mariadb');
+-------------------------------------------+
| PASSWORD('mariadb')                       |
+-------------------------------------------+
| *54958E764CE10E50764C2EECBB71D01F08549980 |
+-------------------------------------------+

CREATE USER username@hostname
  IDENTIFIED BY PASSWORD '*54958E764CE10E50764C2EECBB71D01F08549980';

Аналогично всем другим подключаемым модулям аутентификации, вы также можете указать имя подключаемого модуля в предложении IDENTIFIED VIA, одновременно предоставляя хеш пароля в качестве предложения USING. Например:

CREATE USER username@hostname
  IDENTIFIED VIA mysql_native_password USING '*54958E764CE10E50764C2EECBB71D01F08549980';

Изменение паролей пользователей

Вы можете изменить пароль учетной записи пользователя с помощью инструкции SET PASSWORD, предоставив текстовый пароль в качестве аргумента функции PASSWORD(). Например:

SET PASSWORD =  PASSWORD('new_secret')

Вы также можете изменить пароль учетной записи пользователя с помощью инструкции ALTER USER. Вам необходимо убедиться, что параметр old_passwords=0 установлен, а затем указать пароль с помощью предложения IDENTIFIED BY. Например:

SET old_passwords=0;
ALTER USER username@hostname IDENTIFIED BY 'new_secret';

Подключаемые модули аутентификации клиентов

Для клиентов, использующих библиотеки libmysqlclient или MariaDB Connector/C, MariaDB предоставляет один подключаемый модуль аутентификации клиентов, совместимый с подключаемым модулем аутентификации mysql_native_password.

  • mysql_native_password

При подключении с помощью клиента или утилиты к серверу как учетной записи пользователя, аутентифицирующейся с подключаемым модулем аутентификации mysql_native_password, вам может потребоваться указать клиенту местоположение соответствующего подключаемого модуля аутентификации клиентов, указав параметр --plugin-dir. Например:

mysql --plugin-dir=/usr/local/mysql/lib64/mysql/plugin --user=alice

Однако подключаемый модуль аутентификации клиентов mysql_native_password обычно статически подключается к клиентским библиотекам, таким как libmysqlclient или MariaDB Connector/C, поэтому это обычно не требуется.

mysql_native_password

Подключаемый модуль аутентификации клиентов mysql_native_password хеширует пароль перед отправкой его на сервер.

Поддержка в клиентских библиотеках

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

Известные старые проблемы (актуальны только для старых установок)

Несоответствия между столбцами Password и authentication_string

По соображениям совместимости подключаемый модуль аутентификации mysql_native_password пытается прочитать хеш пароля из столбцов Password и authentication_string в таблице mysql.user. Это в прошлом приводило к проблемам, если у одного из столбцов было другое значение, чем у другого.

Начиная с MariaDB 10.2.19 и MariaDB 10.3.11, CREATE USER, ALTER USER, GRANT и SET PASSWORD будут устанавливать оба столбца всякий раз, когда изменяется пароль учетной записи.

Дополнительную информацию см. в MDEV-16774.

См. также

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

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/authentication-plugin-mysql_native_password/

Spec-Zone.ru

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